D 的个人博客

全职做开源,自由职业者

  menu

Go 边看边练 -《Go 学习笔记》系列(五)

上一篇: [1437984612418]


ToC


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}

配合标签,breakcontinue 可在多级嵌套循环中跳出。

附:break 可用于 forswitchselect,而 continue 仅能用于 for 循环。

1x := 100
2
3switch {
4	case x >= 0:
5		if x == 0 { break }
6		println(x)
7}

下一篇: [1438164538421]



社区小贴士

  • 关注标签 [golang] 可以方便查看 Go 相关帖子
  • 关注标签 [Go 学习笔记] 可以方便查看本系列
  • 关注作者后如有新帖将会收到通知

该文章同步自 黑客派