4.2 Go switch
4.2 Go switch
switch语句用于基于不同条件执行不同动作,每一个case分支唯一,自上而下逐一测试,直到匹配结束,默认自动终止
,不需要break
。
2. switch基本语法
- switch后面跟着表达式(变量、常量、有返回值函数等)
- case后面的表达式必须和switch表达式数据类型一致
- case后可以有多个表达式
- case后面表达式常量不得重复
package main import "fmt" func main() { var week int fmt.Println("请输入星期几:") fmt.Scanln(&week) switch week { case 1: fmt.Println("星期一,上班!!") case 2, 3, 4, 5: fmt.Println("星期二到星期五,你还得上班!!") case 6: fmt.Println("周六你就想休息?加班!!") case 7: fmt.Println("老子迟早要辞职,终于能休息了!!") default: fmt.Println("输入错误你就必须得上班!!") } }
- switch替代if-else使用
package main import "fmt" func main() { var score int fmt.Println("请录入你的成绩:>") fmt.Scanln(&score) switch { case score > 90: fmt.Println("成绩优秀") case score >= 70: fmt.Println("及格中等") case score >= 60: fmt.Println("勉强及格了") default: fmt.Println("恭喜你,考试不及格") } }
- switch之穿透
fallthrough
,在case语句块后添加fallthrough会继续执行下一个case
package main import "fmt" func main() { var score int fmt.Println("请录入你的成绩:>") fmt.Scanln(&score) switch { case score > 90: fmt.Println("成绩优秀") fallthrough case score >= 70: fmt.Println("及格中等") case score >= 60: fmt.Println("勉强及格了") default: fmt.Println("恭喜你,考试不及格") } }
7.switch还可以用于判断interface变量实际存储的变量类型。
package main import "fmt" func main() { var x interface{} //x是空接口类型,可以接收任意类型 var y = 19.9 x = y switch i := x.(type) { case nil: fmt.Printf("x的类型是%T\n", i) case float64: fmt.Printf("x的类型是%T\n", i) default: fmt.Println("未知类型") } }
2.1. switch和if
判断的具体数值不多,符合整数、浮点数、字符、字符串等类型,建议用switch。
对bool类型的判断,用if,if可控范围更广。