switch
是一个条件语句,它计算一个表达式的值,将其与可能匹配的值进行比较,然后根据匹配结果执行代码块。它可以看作是书写多个if else
子句的更好替代方法。
让我们看一个示例,它以手指号作为输入,然后输出该手指的名称。例如,1是拇指,2是食指,等等。
package main
import (
"fmt"
)
func main() {
finger := 4
switch finger {
case 1:
fmt.Println("Thumb")
case 2:
fmt.Println("Index")
case 3:
fmt.Println("Middle")
case 4:
fmt.Println("Ring")
case 5:
fmt.Println("Pinky")
}
}
在上面的程序中,switch finger
将finger
的值与每个case
语句进行比较。从上到下匹配每个case
,执行首个匹配case
的代码。在本例中,finger
的值为4,因此打印了Ring
。
不允许重复使用相同的常数值。如果你试图运行下面的程序,编译器会报错
main.go:18:2: duplicate case 4 in switch previous case at tmp/sandbox887814166/main.go:16:7
package main
import (
"fmt"
)
func main() {
finger := 4
switch finger {
case 1:
fmt.Println("Thumb")
case 2:
fmt.Println("Index")
case 3:
fmt.Println("Middle")
case 4:
fmt.Println("Ring")
case 4://duplicate case
fmt.Println("Another Ring")
case 5:
fmt.Println("Pinky")
}
}