switch
语句是编写一系列if-else
语句的较短方法。它运行“其值等于条件表达式”的第一种情况。
Go的switch
类似于C,C ++,Java,JavaScript和PHP,但Go仅运行选定的情况,而不是随后的所有情况。实际上,Go中自动提供了每种情况下这些语言结尾处所需的break
语句。另一个重要的区别是Go的switch
情况不需要是常量,并且涉及的值也不必是整数。
eg:
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
语句从上到下评估case
后面的语句,当一个case
是true
的时候,会停止后续case
的求值。
eg:
switch i {
case 0:
case f():
} // does not call f if i==0.
没有带条件的switch
等价于switch true
, 这可以是编写长if-then-else
语句的一种简洁方法。
eg:
func main() {
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("Good morning!")
case t.Hour() < 17:
fmt.Println("Good afternoon.")
default:
fmt.Println("Good evening.")
}
}