本文最初发表在我的个人博客,查看原文,获得更好的阅读体验
在Go中,switch语法非常灵活。
Go 的 switch 语句类似于 C、C++、Java、JavaScript 和 PHP 中的,不过 Go 只运行选定的 case,而非之后所有的 case。实际上,Go自动提供了每个 case 后面所需的 break 语句。 除非以fallthrough
语句结束,否则分支会自动终止。 Go 的另一个重要特点在于 switch 的 case 无需为常量,且取值不必为整数。
一 基本的switch语句
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Print("Go runs on ")
switch os := runtime.GOOS; os {
case "darwin":
fmt.Println("OS X.")
case "linux":
fmt.Println("Linux.")
default:
// freebsd, openbsd,
// plan9, windows...
fmt.Printf("%s.\n", os)
}
}
二 switch 的求值顺序
switch 的 case 语句从上到下顺次执行,直到匹配成功时停止。
例如:
switch i {
case 0:
case f():
}
在 i==0 时 f 不会被调用。
三 没有条件的 switch
没有条件的 switch 同 switch true 一样。这种形式能将一长串的if-then-else
写得更加清晰,而且这也是Go的惯用语法。
示例1:
package main
import (
"fmt"
"time"
)
func main(