在Go语言中,switch
语句是一种非常强大的控制流结构,它允许一个变量的值与多个case进行比较,并根据匹配的结果执行不同的代码块。与C、C++或Java中的switch
不同,Go语言的switch
更灵活,支持没有显式条件的switch
(此时它类似于多个if-else
的集合),以及"fallthrough"机制,允许不显式中断时继续执行下一个case。
switch 表达式 {
case 值1:
// 当表达式的值等于值1时,执行这里的代码
case 值2:
// 当表达式的值等于值2时,执行这里的代码
...
default:
// 如果没有任何case匹配,执行这里的代码
}
示例
基本的switch
语句
package main
import "fmt"
func main() {
i := 2
switch i {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
default:
fmt.Println("other")
}
}
输出 two
省略表达式的switch
package main
import "fmt"
func main() {
i := 2
switch {
case i == 1:
fmt.Println("one")
case i == 2:
fmt.Println("two")
default:
fmt.Println("other")
}
}
输出 two
使用fallthrough
package main
import "fmt"
func main() {
switch {
case false:
fmt.Println("false case")
fallthrough
case true:
fmt.Println("true case")
default:
fmt.Println("default case")
}
}
输出 true case
注意事项
- 如果
switch
语句中省略了表达式,那么它相当于switch true
,此时每个case
后面都应该跟一个条件表达式。 fallthrough
允许case
之间的连续执行,但通常要谨慎使用,因为它可能导致意外的行为。switch
可以处理任何类型的表达式,包括字符串和自定义类型。- Go语言的
switch
比传统的switch
更灵活,因为它不需要break
来阻止执行流入下一个case
(除非使用了fallthrough
)。