Golang从入门到精通(七):Golang控制语句之switch
来源:互联网 发布:snmp l流量监控软件 编辑:程序博客网 时间:2024/06/05 07:26
基本结构
相比较 C 和 Java 等其它语言而言,Go 语言中的 switch 结构使用上更加灵活。它接受任意形式的表达式,例如:
switch var1 { case val1: ... case val2: ... default: ...}
变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。前花括号{
必须和 switch 关键字在同一行。
您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3
。
每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。一旦成功地匹配到每个分支,在执行完相应代码后就会退出整个 switch 代码块,也就是说你不需要特别使用 break 语句来表示结束。
Go语言里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch。
含初始化语句的switch
switch 语句的另外一种形式是包含初始化的语句,例如:
switch initialization { case val1: ... case val2: ... default: ...}
这种形式可以非常优雅地进行条件判断:
switch result := calculate(); { case result < 0: ... case result > 0: ... default: // 0}
fallthrough关键字
switch语句中,如果在执行完每个分支的代码后,还希望继续执行后续分支的代码,可以使用fallthrough
关键字来达到目的。例如:
package mainimport( "fmt")func main() { i :=2 switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough //fallthrough会强制执行后面的case代码 case 3: fmt.Printf("3") default: fmt.Printf("Default") }}
以上代码在 i=0时输出0,i=1时输出1,i=2时输出3,i=3时输出3,其他时候便输出Default。
综合代码示例
这里我们把上面所讲的知识点串联起来,展示下 Go 语言中变化多样的switch语句,如下:
package mainimport( "fmt") func main() { /* local variable definition */ Num := 6 var grade string = "B" var marks int = 90 switch { case 0 <= Num && Num <= 3: fmt.Println("0-3") case 4 <= Num && Num <= 6: fmt.Println("4-6") case 7 <= Num && Num <= 9: fmt.Println("7-9") } switch marks { case 90: grade = "A" case 80: grade = "B" case 50,60,70 : grade = "C" default: grade = "D" } switch { case grade == "A" : fmt.Println("Excellent!" ) case grade == "B", grade == "C" : fmt.Println("Well done" ) case grade == "D" : fmt.Println("You passed" ) case grade == "F": fmt.Println("Better try again" ) default: fmt.Println("Invalid grade" ); } fmt.Println("Your grade is :", grade );}
以上代码的打印结果是:
4-6Excellent!Your grade is : A
阅读全文
0 0
- Golang从入门到精通(七):Golang控制语句之switch
- Golang从入门到精通(五):Golang控制语句之if/else
- Golang从入门到精通(六):Golang控制语句之for
- Golang从入门到精通(一):Golang介绍
- Golang从入门到精通(三):Golang数据类型
- Golang从入门到精通(八):Golang数组
- Golang从入门到精通(九):Golang字符串
- Golang从入门到精通(十):Golang函数
- Golang从入门到精通(十一):Golang方法
- Golang从入门到精通(十四):Golang结构体
- Golang从入门到精通(十五):Golang指针
- Golang从入门到精通(十六):Golang接口
- Golang从入门到精通(十七):Golang反射
- Golang从入门到精通(十二):Golang复合数据之slice
- Golang从入门到精通(十三):Golang复合数据之map
- Golang从入门到精通(十八):Golang并发编程之Goroutine
- Golang从入门到精通(十九):Golang并发编程之Channel
- Golang从入门到精通(二十):Golang错误处理之error
- AlertDialog中修改字体颜色。AlertDialog简单使用,小米2max无颜色
- php单双引号对变量解析的影响以及php向mysql插入数据时的变量解析问题详解
- Torch框架及XNOR-Net学习笔记(1)--Torch的安装
- Linux常用命令 全
- [BZOJ3994][SDOI2015]约数个数和(莫比乌斯反演)
- Golang从入门到精通(七):Golang控制语句之switch
- Java第一节课
- mysql 5.7.13 安装配置方法图文教程(linux)
- springboot日志文件logback+Slf4j
- linux进程状态详解
- 快来庆祝我的博客开通吧
- 利用高德地图实现定位功能
- 留言本问题总结
- reeds-shepp曲线