Go switch 语句
switch 语句
使用 switch
语句来选择要执行的多个代码块之一。
Go 中的 switch
语句类似于 C、C++、Java、JavaScript 和 PHP 中的语句。不同之处在于它只运行匹配的 case,因此不需要 break
语句。
单一情况 switch 语法
语法
switch 表达式 {
case x
// 代码块
case y
// 代码块
case z
...
default
// 代码块
}
它是这样工作的
- 表达式只会被评估一次
- 将
switch
表达式的值与每个case
的值进行比较 - 如果有匹配,则执行相关的代码块
default
关键字是可选的。它指定了一些代码,如果没有任何case
匹配,则运行这些代码
单一情况 switch 示例
以下示例使用星期几的数字来计算星期几的名称
示例
package main
import ("fmt")
func main() {
day := 4
switch day {
case 1
fmt.Println("Monday")
case 2
fmt.Println("Tuesday")
case 3
fmt.Println("Wednesday")
case 4
fmt.Println("Thursday")
case 5
fmt.Println("Friday")
case 6
fmt.Println("Saturday")
case 7
fmt.Println("Sunday")
}
}
结果
Thursday
default 关键字
default
关键字指定了一些代码,如果没有任何 case 匹配,则运行这些代码
示例
package main
import ("fmt")
func main() {
day := 8
switch day {
case 1
fmt.Println("Monday")
case 2
fmt.Println("Tuesday")
case 3
fmt.Println("Wednesday")
case 4
fmt.Println("Thursday")
case 5
fmt.Println("Friday")
case 6
fmt.Println("Saturday")
case 7
fmt.Println("Sunday")
default
fmt.Println("Not a weekday")
}
}
结果
Not a weekday
所有 case
值都应该与 switch
表达式具有相同的类型。否则,编译器将引发错误
示例
package main
import ("fmt")
func main() {
a := 3
switch a {
case 1
fmt.Println("a is one")
case "b"
fmt.Println("a is b")
}
}
结果
./prog.go:11:2: cannot use "b" (type untyped string) as type int