switch语句
1.普通switch语句
switch 变量{
case 数值1:分支1
case 数值2:
分支2
case 数值3:
分支3
...
[default:
最后一个分支
]
}
package main import "fmt" func main() { /* switch语句 switch var{ case num1: case num2: case num3: ... default: } */ num1 := 4 switch num1 { case 3: fmt.Println("第三季度") case 4: fmt.Println("第四季度") case 1: // num1 == 1 fmt.Println("第一季度") case 2: fmt.Println("第二季度") default: fmt.Println("我也不知道啦。。") } }
用变量的数值,依次匹配case后的数值,和哪个匹配上,就执行哪个分支,如果都没有匹配上就执行default。。
case其实可以是无序的。
case后的数值不能重复。
2.switch可以省略变量
switch {//相当于true}
3.case后的数值可以是多个num:=0
switch num{
case 1,2,3,4:
}
4.switch也支持多一条初始化语句,用于初始化局部变量
switch num:= 0;num{
}
package main import ( "fmt" ) func main() { //1.省略switch后的变量 switch { //相当于true case true: fmt.Println("case后的数值是true。。") case false: fmt.Println("case后的数值是false。。") } score := 48 switch { case score >= 90 && score <= 100: fmt.Println("优秀") case score >= 60 && score < 70: fmt.Println("及格") case score >= 80 && score < 90: fmt.Println("良好") case score >= 70 && score < 80: fmt.Println("中") case score >= 0 && score < 60: fmt.Println("不及格") } //2.case后有多个数值 a := "A" switch a { case "A", "B","C","D": fmt.Println("A-D") case "E","F","G": fmt.Println("E-G") } score = 77 switch score/10 { // 0,1,2,3,4,5,6,7,8,9,10 case 9, 10: fmt.Println("优秀") case 8: fmt.Println("良好") case 7: fmt.Println("中") case 6: fmt.Println("及格") case 5,4,3,2,1,0: //default fmt.Println("不及格") } //3.switch也可以多条初始化语句,一般用于初始化局部变量 switch s1:="go"; s1 { case "go": fmt.Println("golang..") case "java": fmt.Println("java") case "php": fmt.Println("php") case "python": fmt.Println("ptyhon") default: fmt.Println("玩去。。") } }
swithc关键字
case:switch的其中一个条件break:强制退出switch,无论匹配上的case分支,知否执行完毕。
default:如果所有case都不满足,就走default
fallthrough:用于穿透,
当匹配上某个case后,就执行该case内容,如果有fallthrough,下面紧邻的case直接执行
if和switch对比:
A:if语句仅作用在条件是bool,switchB:if适合分支较少的情况。switch适合分支较多的情况。