上一篇: [1437984612418]
ToC
- Go 边看边练 -《Go 学习笔记》系列(一)- 变量、常量
- Go 边看边练 -《Go 学习笔记》系列(二)- 类型、字符串
- Go 边看边练 -《Go 学习笔记》系列(三)- 指针
- Go 边看边练 -《Go 学习笔记》系列(四)- 控制流 1
- Go 边看边练 -《Go 学习笔记》系列(五)- 控制流 2
- Go 边看边练 -《Go 学习笔记》系列(六)- 函数
- Go 边看边练 -《Go 学习笔记》系列(七)- 错误处理
- Go 边看边练 -《Go 学习笔记》系列(八)- 数组、切片
- Go 边看边练 -《Go 学习笔记》系列(九)- Map、结构体
- Go 边看边练 -《Go 学习笔记》系列(十)- 方法
- Go 边看边练 -《Go 学习笔记》系列(十一)- 表达式
- Go 边看边练 -《Go 学习笔记》系列(十二)- 接口
- Go 边看边练 -《Go 学习笔记》系列(十三)- Goroutine
- Go 边看边练 -《Go 学习笔记》系列(十四)- Channel
2.4.4 Switch
分支表达式可以是任意类型,不限于常量。可省略 break
,默认自动终止。
1x := []int{1, 2, 3}
2i := 2
3
4switch i {
5 case x[1]:
6 println("a")
7 case 1, 3:
8 println("b")
9 default:
10 println("c")
11}
输出:
1a
如需要继续下一分支,可使用 fallthrough
,但不再判断条件。
1x := 10
2
3switch x {
4 case 10:
5 println("a")
6 fallthrough
7 case 0:
8 println("b")
9}
输出:
1a
2b
省略条件表达式,可当 if...else if...else 使用。
1switch {
2 case x[1] > 0:
3 println("a")
4 case x[1] < 0:
5 println("b")
6 default:
7 println("c")
8}
9
10switch i := x[2]; { // 带初始化语句
11 case i > 0:
12 println("a")
13 case i < 0:
14 println("b")
15 default:
16 println("c")
17}
2.4.5 Goto, Break, Continue
支持在函数内 goto
跳转。标签名区分大小写,未使用标签引发错误。
1func main() {
2 var i int
3 for {
4 fmt.Println(i)
5 i++
6 if i > 2 {
7 goto BREAK
8 }
9 }
10
11BREAK:
12 fmt.Println("break")
13EXIT: // Error: label EXIT defined and not used
14}
配合标签,break
和 continue
可在多级嵌套循环中跳出。
附:break
可用于 for
、switch
、select
,而 continue
仅能用于 for
循环。
1x := 100
2
3switch {
4 case x >= 0:
5 if x == 0 { break }
6 println(x)
7}
下一篇: [1438164538421]
- 本系列是基于雨痕的《Go 学习笔记》(第四版)整理汇编而成,非常感谢雨痕的辛勤付出与分享!
- 转载请注明:文章转载自:黑客与画家的社区 [http://symphony.b3log.org]
- 如果你觉得本章节做得不错,请在下面打赏一下吧~
社区小贴士
- 关注标签 [golang] 可以方便查看 Go 相关帖子
- 关注标签 [Go 学习笔记] 可以方便查看本系列
- 关注作者后如有新帖将会收到通知
该文章同步自 黑客派