注意事项: 1.case/switch后面是一个表达式(常量值,变量,一个有返回值的函数等) 2.case后的表达式的值的数据类型,必须和switch的表达式数据类型一致 3.case后面可以带多个表达式,使用逗号间隔。 4.case后面的表达式如果是常量值,要求不可以重复 5.case后面不需要带break,default不是必须的 6.switch后面可以不带表达式,类似if else分支 案例:
var age int =10 switch{ case age== 10: fmt.Println("age==10") case age== 20: fmt.Println("age==20") default: fmt.Println("输入有错") } // 7.switch后面可以直接声明一个变量,以分号结束,但是不推荐使用。 // 8.switch穿透-fallthrough,如果在case语句块后面增加一个fallthrough,则会继续执行下一个case,也叫switch穿透。 // 9.Type Switch:switch语句还用于type-switch来判断interface变量中实际指向的变量类型。基础用法
package main import "fmt" func main() { for i := 0; i < 10; i++ { fmt.Println("你好") } } /* 语法格式 for 循环变量初始化; 循环条件; 循环变量迭代 { 循环操作语句 } */用法二
package main import "fmt" func main() { j := 1 for j <= 10 { fmt.Println("你好") j++ } }用法三
package main import "fmt" func main() { j := 1 for { if j <= 10 { fmt.Println("你好") } else { break } j++ } }用法四-字符串遍历
package main import "fmt" func main() { /* //字符串遍历方式一:传统方式 var str string = "hello" for i := 0; i < len(str); i++ { fmt.Printf("%c \n", str[i]) } */ //字符串遍历方式二:for-range fmt.Println() var str string str = "hello,孙"//传统方式字符串不可以含有中文 for index, val := range str { fmt.Printf("index=%d,val=%c \n", index, val) } }示例代码:
package main import "fmt" func main() { //案例:统计三个班的成绩,每个班级有五人,求出各个班平均分和所有人平均分(学生成绩由键盘输入) var classnum int = 3 var studentnum int = 5 var totalsum float64 = 0.0 for j := 1; j <= classnum; j++ { sum := 0.0 for i := 1; i <= studentnum; i++ { var score float64 fmt.Printf("请输入第%d班 第%d位学生成绩 \n", j, i) fmt.Scanln(&score) //总分 sum = sum + score } fmt.Printf("第%d班的平均成绩为%v \n", j, sum/float64(studentnum)) totalsum = sum + totalsum } fmt.Printf("各个班总成绩为%v 所有班的平均分为%v \n", totalsum, totalsum/float64(studentnum*classnum)) }1.break用于终止某个语句块的执行,用于中断for循环或者跳出switch语句 2.break出现在多层嵌套的语句块时,可以通过标签指明要终止哪一层语句 3.break默认会跳出最近的for循环,后面指定标签则跳出标签对应的for循环 示例代码:
package main import "fmt" func main() { lable2: for i := 0; i < 4; i++ { //lable1: //设置一个标签 for j := 0; j < 10; j++ { if j == 2 { break lable2 } fmt.Println("j=", j) } } }continue用于结束本次循环,继续执行下一次循环,也可以像break使用标签 示例代码:
package main import "fmt" func main() { //lable2: for i := 1; i < 4; i++ { //lable1: for j := 0; j < 10; j++ { if j == 2 { continue } fmt.Println("j=", j) } } }goto可以无条件地转移到程序中指定的行。
goto通常和条件语句配合使用,用来实现条件转移,跳出循环体等功能。程序设计中一般不提倡使用,会造成流程混乱。
示例代码:
package main import "fmt" func main() { var n int n = 30 fmt.Println("ok1") if n > 20 { goto label1 } fmt.Println("ok2") fmt.Println("ok3") fmt.Println("ok4") label1: fmt.Println("ok5") }return使用在方法或者函数中,表示跳出所在的方法或者函数。
示例代码:
package main import "fmt" func main() { //return使用在方法或者函数中,表示跳出所在的方法或者函数 for i := 0; i <= 10; i++ { if i == 3 { return } fmt.Println("nihao", i) } fmt.Println("hello") }如果return是在普通函数中,则跳出该函数,即不再执行函数return后的代码。
如果return是在main函数中,表示终止main函数,即终止程序。