switch语句
switch是一个条件语句,它是可以代替多个if else的常用方式
例子
package main import "fmt" func main() { a:=10 #定义一个变量a=10 switch a { case 1: fmt.Println("1") case 2: fmt.Println("2") case 10: fmt.Println("10") } }
switch a 将 a 的值与每个case后面的值进行比较,符合条件的就执行相应的代码。注意:case不允许出现重复值
默认情况default
当其他情况都没匹配上时会执行default的代码。default不一定只能出现在switch语句的最后,他可以放在switch语句的任何地方
package main import "fmt" func main() { a:=11 switch a { case 1: fmt.Println("1") case 2: fmt.Println("2") case 10: fmt.Println("10") default: fmt.Println("不知道") } }
多表达式判断
通过用逗号分隔,可以在一个case中包含多个表达式
package main import "fmt" func main() { a:=11 switch a { case 1,4,5: fmt.Println("1") case 2,8,9: fmt.Println("2") case 10,11: fmt.Println("10") default: fmt.Println("不知道") } } #结果 10
无表达式的switch
打印符合条件的相应代码
package main import "fmt" func main() { a:=11 switch { #无表达式a case a>10: fmt.Println("大于10") case a<10: fmt.Println("小于10") default: fmt.Println("10") } }
#结果
大于10
Fallthrough语句
在Go中,每执行完一个case后,会从switch语句中跳出来,不再做后续case的判断和执行。使用Fallthrough语句可以在已经执行完成的case之后,把控制权转移到下一个case的执行代码中。
package main import "fmt" func main() { a:=10 switch a { case 1: fmt.Println("1") fmt.Println("xxxx") case 2: fmt.Println("2") case 10: fmt.Println("10") //穿透,无条件执行下一个case的内容 fallthrough case 11: fmt.Println("11") fallthrough case 12: fmt.Println("12") } } #结果 10,11,12