Go switch 语句
switch 语句
使用 switch
语句从多个代码块中选择一个来执行。
Go 中的 switch
语句类似于 C、C++、Java、JavaScript 和 PHP 中的语句。不同之处在于它只执行匹配的 case,因此不需要 break
语句。
单 case switch 语法
语法
switch 表达式 {
case x
// 代码块
case y
// 代码块
case z
...
default
// 代码块
}
工作原理如下
- 表达式只计算一次
- switch 表达式的值与每个
case
的值进行比较 - 如果匹配成功,则执行关联的代码块
default
关键字是可选的。如果没有任何case
匹配,则指定要运行的代码
单 case switch 示例
下面的示例使用星期几的数字来计算星期几的名称
示例
package main
import ("fmt")
func main() {
day := 4
switch day {
case 1
fmt.Println("星期一")
case 2
fmt.Println("星期二")
case 3
fmt.Println("星期三")
case 4
fmt.Println("星期四")
case 5
fmt.Println("星期五")
case 6
fmt.Println("星期六")
case 7
fmt.Println("星期日")
}
}
结果
Thursday
default 关键字
default
关键字指定了在没有 case 匹配时运行的一些代码。
示例
package main
import ("fmt")
func main() {
day := 8
switch day {
case 1
fmt.Println("星期一")
case 2
fmt.Println("星期二")
case 3
fmt.Println("星期三")
case 4
fmt.Println("星期四")
case 5
fmt.Println("星期五")
case 6
fmt.Println("星期六")
case 7
fmt.Println("星期日")
default
fmt.Println("不是一个工作日")
}
}
结果
不是一个工作日
所有 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