switch
前言
在 Go 语言中,switch
语句允许我们在多个选项中执行一个代码块。它提供了一种更加简洁和清晰的方式来处理多个条件,而不需要使用多个 if...else
语句。switch
语句的结构非常适合处理多种情况的逻辑判断。
作用
switch
语句用于根据表达式的值选择性地执行不同的代码块。它使代码更易读、更简洁,并且避免了使用多个 if...else
语句时可能出现的复杂性。
使用场景
- 处理多个可能的情况: 当需要根据一个变量的不同值执行不同的代码块时使用。例如,基于一天的数字值打印相应的星期几。
- 替代复杂的 if…else 语句: 当有多个条件需要判断时,使用
switch
可以使代码更加清晰和易于维护。 - 实现多值匹配: 可以在一个
case
语句中匹配多个值,从而减少冗余的代码。
示例
- Go 基本的
switch
语句示例
package main
import "fmt"
func main() {
dayOfWeek := 3
switch dayOfWeek {
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("无效的日期")
}
}
输出:
星期二
在这个示例中,我们将 3
赋值给 dayOfWeek
变量。switch
语句检查 dayOfWeek
的值,并执行与 case 3
匹配的代码块,输出“星期二”。
- Go
switch
语句与fallthrough
示例
package main
import "fmt"
func main() {
dayOfWeek := 3
switch dayOfWeek {
case 1:
fmt.Println("星期日")
case 2:
fmt.Println("星期一")
case 3:
fmt.Println("星期二")
fallthrough
case 4:
fmt.Println("星期三")
case 5:
fmt.Println("星期四")
case 6:
fmt.Println("星期五")
case 7:
fmt.Println("星期六")
default:
fmt.Println("无效的日期")
}
}
输出:
星期二
星期三
在这个示例中,我们使用了 fallthrough
关键字。这意味着在 case 3
的代码块执行后,case 4
的代码块也会被执行,从而输出“星期三”。
- Go
switch
语句中的多个case
示例
package main
import "fmt"
func main() {
dayOfWeek := "星期日"
switch dayOfWeek {
case "星期六", "星期日":
fmt.Println("周末")
case "星期一", "星期二", "星期三", "星期四", "星期五":
fmt.Println("工作日")
default:
fmt.Println("无效的日期")
}
}
输出:
周末
在这个示例中,我们使用了多个值来匹配单一的 case
。case "星期六", "星期日"
会匹配到“周末”,而其他工作日则输出“工作日”。
- Go 没有表达式的
switch
语句示例
package main
import "fmt"
func main() {
numberOfDays := 28
// 没有表达式的 switch
switch {
case numberOfDays == 28:
fmt.Println("这是二月")
default:
fmt.Println("不是二月")
}
}
输出:
这是二月
在这个示例中,switch
语句没有表达式,因此它会判断每个 case
语句的布尔值。在 case numberOfDays == 28
中,条件为 true
,所以输出“这是二月”。
- Go
switch
语句与可选语句示例
package main
import "fmt"
func main() {
// 带有可选语句的 switch
switch day := 4; 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("无效的日期")
}
}
输出:
星期三
在这个示例中,我们在 switch
语句中使用了 day := 4
作为可选语句。这个语句会被赋值给 day
变量,然后根据值匹配到 case 4
,因此输出“星期三”。
结语
switch
语句提供了一种有效的方式来处理多重条件判断,比起使用多个 if...else
语句更加简洁和清晰。通过使用 fallthrough
,多个 case
值匹配,或是没有表达式的 switch
,可以灵活地满足不同的需求。掌握 switch
语句的使用可以帮助我们编写更易读和维护的代码。