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

本贴最后更新于 3031 天前,其中的信息可能已经时移世易

上一篇: https://hacpai.com/article/1437984612418


ToC


2.4.4 Switch

分支表达式可以是任意类型,不限于常量。可省略 break,默认自动终止。

x := []int{1, 2, 3}
i := 2

switch i {
	case x[1]:
		println("a")
	case 1, 3:
		println("b")
	default:
	println("c")
}

输出:

a

如需要继续下一分支,可使用 fallthrough,但不再判断条件。

x := 10

switch x {
	case 10:
		println("a")
		fallthrough
	case 0:
		println("b")
}

输出:

a
b

省略条件表达式,可当 if...else if...else 使用。

switch {
	case x[1] > 0:
		println("a")
	case x[1] < 0:
		println("b")
	default:
		println("c")
}

switch i := x[2]; { // 带初始化语句
	case i > 0:
		println("a")
	case i < 0:
		println("b")
	default:
		println("c")
}

2.4.5 Goto, Break, Continue

支持在函数内 goto 跳转。标签名区分大小写,未使用标签引发错误。

func main() {
    var i int
    for {
        fmt.Println(i)
        i++
        if i > 2 {
            goto BREAK
        }
    }

BREAK:
    fmt.Println("break")
EXIT: // Error: label EXIT defined and not used
}

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

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

x := 100

switch {
	case x >= 0:
		if x == 0 { break }
		println(x)
}

下一篇: https://hacpai.com/article/1438164538421



社区小贴士

  • 关注标签 [golang] 可以方便查看 Go 相关帖子
  • 关注作者后如有新帖将会收到通知
打赏 50 积分后可见
50 积分 • 2 打赏
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    491 引用 • 1383 回帖 • 368 关注
  • 教程
    139 引用 • 476 回帖 • 7 关注
  • 雨痕
    14 引用 • 68 回帖 • 3 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • xunxiake

    积分都被我 挥霍没了。就不打赏了。