D 的个人博客

开源程序员,自由职业者

小而美的 Java 博客系统 Solo
Golang 在线 IDE Wide
黑客与画家的社区 Sym
  menu
398 文章
1,769 评论
3343022 浏览
3 当前访客
ღゝ◡╹)ノ❤️

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

上一篇: [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)
}

下一篇: [1438164538421]



社区小贴士

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

该文章同步自 黑客派

评论
  • K

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

    该评论同步自 B3log 社区

    Reply