25 Go 循环语句for循环
2022/6/28 6:22:20
本文主要是介绍25 Go 循环语句for循环,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
golang语言,switch分支控制语句使用 switch语句基本结构如下 switch 表达式1 { case 表达式2,表达式3,...: 语句块1 case 表达式4,表达式5: 语句快2 default: 默认语句 } 注意事项: 1 switch的执行流程是,先执行表达式,得到值,然后和case的表达式进行比较, 如果相等就执行对应case下的语句块,然后退出switch控制。 2 如果switch的表达式值没有和任何case的表达式匹配成功,则执行default下的语句块,然后退出switch控制。 3 golang的case后可以有多个表达式,用英文逗号,分隔。 4 golang中的case语句块结束时不需要写break,因为在默认情况下,当程序执行完case下的语句块后会直接退出switch控制。 5 case/switch后是一个表达式(常量值/变量/一个没有返回值的函数等都可以) 6 case后各个表达式的值数据类型,必须和switch表达式的数据类型一致(同if语句) 7 case后面的表达式如果是常量值,则要求不能重复 8 default语句不是必须的 9 switch后面也可以不带表达式,此时,默认switch后是true值。则后续case后跟上逻辑判断(像if语句一样使用) 10 switch后也可以先申明一个变量,分号结束,再跟上表达式。此种方式不推荐 11 switch穿透 fallthrough,如果在case语句块最后跟上fallthrough,则会继续执行下一个case内的代码块,也叫switch穿透。fallthrough默认只能穿透一层case 12 Type Switch:switch语句还可以被用于type-switch来判断某个interface变量中实际指向的变量类型 demo1 同if/else语句,条件的变量类型必须相同,否则报错,如下:1 var n1 int32 = 1 2 var n2 int64 = 2 3 if n1 < n2 { // invalid operation: n1 < n2 (mismatched types int32 and int64) 4 fmt.Println("OK") 5 } 6 7 switch n1 { 8 case n2: // invalid case n2 in switch on n1 (mismatched types int64 and int32) 9 fmt.Println("OK") 10 default: 11 fmt.Println("未匹配到!") 12 }
demo2
在switch后使用变量声明语句,在case后做条件判断
1 switch a := 4; { 2 case a == 1: 3 fmt.Println("a = 1") 4 case a == 2: 5 fmt.Println("a = 2") 6 case a == 3: 7 fmt.Println("a = 3") 8 default: 9 fmt.Println("未匹配到相等的值!") // 未匹配到相等的值! 10 } 11 // 以上语句每个case后的关系运算都会被执行,同if else
demo3
fallthrough
1 // fallthrough练习 2 switch num:=10; num { 3 case 5: 4 fmt.Println("ok5") 5 case 10: 6 fmt.Println("ok10") // ok10 7 fallthrough 8 case 20: 9 fmt.Println("ok20") // ok20 10 case 30: 11 fmt.Println("ok30") 12 default: 13 fmt.Println("没有匹配到...") 14 }
demo4
type switch的使用
1 var x interface{} 2 var y = 10.0 3 x = y 4 switch i := x.(type) { 5 case nil: 6 fmt.Printf("x 的类型是 %T \n", i) 7 case int: 8 fmt.Println("x 的类型是 int") 9 case float64: 10 fmt.Println("x 的类型是 float64") // x 的类型是 float64 11 case func(int) float64: 12 fmt.Println("x 的类型是 func(int)") 13 case bool, string: 14 fmt.Println("x 的类型是 bool 或 string") 15 default: 16 fmt.Println("未知类型") 17 }
习题:
1 // 练习1 2 // 每周一三五写接口,二四六写前端页面,周日休息 3 switch time.Now().Weekday() { 4 case time.Monday, time.Wednesday, time.Friday : 5 fmt.Println("今天写接口!") 6 case time.Tuesday, time.Thursday, time.Saturday : 7 fmt.Println("今天写前端页面!") 8 default: 9 fmt.Println("今天休息吧!") 10 }
1 // 练习2 2 // 使用switch把小写类型的char转成大写,只转换abcde,其他的输出other 3 var input byte 4 fmt.Println("请输入一个小写字母:") 5 fmt.Scanf("%c \n", &input) 6 switch input { 7 case 'a': 8 fmt.Println("A") 9 case 'b': 10 fmt.Println("B") 11 case 'c': 12 fmt.Println("C") 13 case 'd': 14 fmt.Println("D") 15 case 'e': 16 fmt.Println("E") 17 default: 18 fmt.Println("other char") 19 }
1 // 练习3 2 // 对学习成绩大于60的,输出“合格”,低于60分的输出“不合格”。注:输入的成绩不能高于100 3 var score uint8 4 fmt.Println("请输入考生成绩:") 5 fmt.Scanf("%d \n", &score) 6 switch { 7 case score >= 60 && score <= 100 : 8 fmt.Println("合格") 9 case score >= 0 && score < 60 : 10 fmt.Println("不合格") 11 default: 12 fmt.Println("输入的成绩不能高于100") 13 }
1 // 练习4 2 // 根据用户输入的月份,输出该月份所属的季节 3 var month uint8 4 fmt.Println("请输入月份:") 5 fmt.Scanf("%d \n", &month) 6 switch month { 7 case 3,4,5: 8 fmt.Printf("%d 月是春季 \n", month) 9 case 6,7,8: 10 fmt.Printf("%d 月是夏季 \n", month) 11 case 9,10,11: 12 fmt.Printf("%d 月是秋季 \n", month) 13 case 12,1,2: 14 fmt.Printf("%d 月是冬季 \n", month) 15 default: 16 fmt.Println("请输入1~12月!") 17 }
var n1 int32 = 1 var n2 int64 = 2 if n1 < n2 { // invalid operation: n1 < n2 (mismatched types int32 and int64) fmt.Println("OK") }
switch n1 { case n2: // invalid case n2 in switch on n1 (mismatched types int64 and int32) fmt.Println("OK") default: fmt.Println("未匹配到!") }
这篇关于25 Go 循环语句for循环的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享