go语言学习笔记13_流程控制_分支控制_switch分支
1. switch简介
1) switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上到下逐一测 试,直到匹配为止。
2) 匹配项后面也不需要再加 break
2. switch语法
switch 表达式 { case 表达式1,表达式2,...: 语句块1 case 表达式3,表达式4,...: 语句块2 ...... default: 语句块n }
语法说明:
3. switch的流程图
4. switch使用案例
package main import "fmt" func main(){ var key byte fmt.Println("请输入a,b,c,d,e,f,g中的任意字符") fmt.Scanf("%c",&key) switch key { case \'a\': fmt.Println("今天星期1") case \'b\': fmt.Println("今天星期2") case \'c\': fmt.Println("今天星期3") case \'d\': fmt.Println("今天星期4") case \'e\': fmt.Println("今天星期5") case \'f\': fmt.Println("今天星期6") case \'g\': fmt.Println("今天星期日") default: fmt.Println("你的输入有误") } }
5. switch使用注意事项
1)case/switch 后是一个表达式( 即:常量值、变量、一个有返回值的函数等都可以)
2)case 后的各个表达式的值的数据类型,必须和 switch 的表达式数据类型一致
3)case 后面可以带多个表达式,使用逗号间隔。比如 case 表达式 1, 表达式 2 …
4) case后面的表达式如果是常量值(字面量),则要求不能重复
5) case 后面不需要带 break , 程序匹配到一个 case 后就会执行对应的代码块,然后退出 switch,如 果一个都匹配不到,则执行 default
6) default 语句不是必须的
7) switch 后也可以不带表达式,类似 if –else 分支来使用
8) switch 后也可以直接声明/定义一个变量,分号结束,不推荐。
9)switch 穿透-fallthrough ,如果在 case 语句块后增加 fallthrough ,则会继续执行下一个 case,也 叫 switch 穿透
package main import "fmt" func main(){ var num int = 10 switch num { case 10: fmt.Println("ok") fallthrough //默认一个fallthrough只能穿透一层 case 20: fmt.Println("ok~20") fallthrough case 30: fmt.Println("ok~30") default: fmt.Println("匹配错误") } }
代码结果示例:
6. switch和if比较
1) 如果判断的具体数值不多,而且符合整数、浮点数、字符、字符串这几种类型。建议使用 swtich 语句,简洁高效。
2) 其他情况:对区间判断和结果为 bool 类型的判断,使用 if,if 的使用范围更广。