1. 什么是switch语句
在Go语言中,switch语句是一种选择结构,可以根据表达式的值在一系列可选方案中进行选择并执行相应的代码块。它可以替换多个if语句,使代码更简洁,易读性更高。switch语句的语法如下:
switch expression {
case value1:
// do something
case value2:
// do something
case value3:
// do something
default:
// do something
}
其中,expression是需要匹配的值,case后面的value1、value2、value3是与expression进行匹配的值,default是可选的代码块,它会在所有的case条件都不匹配时执行。
2. switch语句的使用
2.1 匹配整型值
switch语句最常见的用法是匹配整型值,我们可以使用不同的case语句匹配不同的整型值:
func main() {
num := 2
switch num {
case 1:
fmt.Println("One")
case 2:
fmt.Println("Two")
case 3:
fmt.Println("Three")
default:
fmt.Println("Other")
}
}
以上代码输出为:
Two
当num的值为2时,程序会输出“Two”,因为case 2匹配了num的值。
2.2 匹配多个整型值
我们也可以使用多个case语句匹配相同的代码块:
func main() {
num := 2
switch num {
case 1, 2, 3:
fmt.Println("One or Two or Three")
default:
fmt.Println("Other")
}
}
以上代码输出为:
One or Two or Three
当num的值为1、2或3时,程序会输出“One or Two or Three”,因为case 1, 2, 3匹配了num的值。
2.3 匹配表达式
我们也可以在case语句中匹配表达式,例如字符串:
func main() {
fruit := "apple"
switch fruit {
case "apple":
fmt.Println("It's an apple")
case "banana":
fmt.Println("It's a banana")
default:
fmt.Println("It's a fruit")
}
}
以上代码输出为:
It's an apple
当fruit的值为“apple”时,程序会输出“It's an apple”,因为case "apple"匹配了fruit的值。
2.4 匹配布尔值、字符、浮点数、指针
除了匹配整型值和表达式外,我们还可以使用switch语句匹配布尔值、字符、浮点数和指针。例如,下面的代码展示了匹配布尔值和字符:
func main() {
b := true
switch b {
case true:
fmt.Println("true")
case false:
fmt.Println("false")
}
c := 'A'
switch c {
case 'A':
fmt.Println("A")
case 'B':
fmt.Println("B")
default:
fmt.Println("Other")
}
}
以上代码输出为:
true
A
当b的值为true时,程序会输出“true”,因为case true匹配了b的值;当c的值为'A'时,程序会输出“A”,因为case 'A'匹配了c的值。
2.5 不带表达式的switch语句
在Go语言中,我们也可以使用不带表达式的switch语句,这种语句可以用来替代多个if语句。例如:
func main() {
score := 80
switch {
case score > 90:
fmt.Println("A")
case score > 70:
fmt.Println("B")
case score > 60:
fmt.Println("C")
default:
fmt.Println("F")
}
}
以上代码输出为:
B
当score的值为80时,程序会输出“B”,因为case score > 70匹配了score的值。
3. switch语句的注意事项
在使用switch语句时,我们需要注意以下几点:
1. Go语言中,每个case语句的代码块自带break语句,不需要手动添加,一旦匹配成功就会自动执行相应的代码块并跳出switch语句;
2. 我们也可以使用fallthrough关键字实现向下执行,例如:
func main() {
num := 2
switch num {
case 1:
fmt.Println("One")
fallthrough
case 2:
fmt.Println("Two")
case 3:
fmt.Println("Three")
default:
fmt.Println("Other")
}
}
以上代码输出为:
One
Two
当num的值为1时,程序会输出“One”、“Two”,这是因为fallthrough关键字使得程序继续执行下一个case语句的代码块。
3. Go语言中,switch语句的表达式可以是任意类型;
4. 在使用switch语句时,我们可以将多个条件压缩成一个条件,例如:
func main() {
num := 2
switch {
case num > 1 && num < 3:
fmt.Println("Between 1 and 3")
default:
fmt.Println("Other")
}
}
以上代码输出为:
Between 1 and 3
当num的值为2时,程序会输出“Between 1 and 3”,因为case num > 1 && num < 3匹配了num的值。
4. 总结
本文详细介绍了Go语言中的switch语句,包括匹配整型值、表达式、布尔值、字符、浮点数和指针,以及不带表达式的switch语句的用法,并列举了使用注意事项供读者参考。