Go 语言中的 switch
控制流语句用于根据一个表达式的值,从多个可能的选项中选择一个执行。它的基本语法如下:
switch expression {
case value1:
// 在表达式等于 value1 时执行的代码块
case value2:
// 在表达式等于 value2 时执行的代码块
default:
// 在表达式不等于任何一个值时执行的代码块
}
在上面的代码中,expression
是一个表达式,用于进行比较。value1
、value2
等是可能的选项,用于与表达式进行比较。如果表达式等于其中的一个值,则会执行相应的代码块;否则会执行 default
代码块。
与其他编程语言不同的是,在 Go 中,每个 case
后面不需要显式地使用 break
关键字来终止 switch
语句的执行。如果 case
语句的代码块执行完毕,会自动跳出 switch
语句。
下面是一个示例,演示了如何使用 switch
语句:
package main
import "fmt"
func main() {
x := 2
switch x {
case 1:
fmt.Println("x is 1")
case 2:
fmt.Println("x is 2")
default:
fmt.Println("x is not 1 or 2")
}
}
在上面的代码中,我们定义了一个变量 x
,并使用 switch
语句根据它的值执行不同的代码块。如果 x
等于 1,就输出一条消息;如果 x
等于 2,就输出另一条消息;否则输出第三条消息。
switch
语句还有一种特殊的写法,可以在 switch
语句中不带表达式。这种写法可以用于替代多个 if-else
语句。其语法如下:
switch {
case condition1:
// 在条件1成立时执行的代码块
case condition2:
// 在条件2成立时执行的代码块
default:
// 在所有条件都不成立时执行的代码块
}
在上面的代码中,condition1
、condition2
等是布尔表达式,用于进行比较。如果其中任何一个成立,就会执行相应的代码块。如果所有条件都不成立,则会执行 default
代码块。
下面是一个示例,演示了如何使用不带表达式的 switch
语句:
package main
import "fmt"
func main() {
x := 10
switch {
case x > 5:
fmt.Println("x is greater than 5")
case x < 5:
fmt.Println("x is less than 5")
default:
fmt.Println("x is equal to 5")
}
}
在上面的代码中,我们定义了一个变量 x
,并使用不带表达式的 switch
语句根据它的值执行不同的代码块。如果 x
大于 5,就输出一条消息;如果 x
小于 5,就输出另一条消息;否则输出第三条消息。