在程序中,我们常常需要依据不同的条件执行不同的代码逻辑。Go 提供了两种主要的条件语句:
if
和switch
,结构清晰、功能强大。
一、if
语句
1. 基本语法
if 条件表达式 {
// 条件为 true 时执行的代码
}
2. 带 else
的写法
if x > 10 {
fmt.Println("x 大于 10")
} else {
fmt.Println("x 小于或等于 10")
}
3. 多分支:else if
if x > 100 {
fmt.Println("x > 100")
} else if x > 50 {
fmt.Println("50 < x <= 100")
} else {
fmt.Println("x <= 50")
}
4. 支持初始化语句
if y := getValue(); y > 10 {
fmt.Println("y 大于 10")
}
y
仅在if
语句的作用域内可用。
二、switch
语句
1. 基本语法
switch 变量 {
case 值1:
// 执行代码1
case 值2:
// 执行代码2
default:
// 所有 case 不匹配时执行
}
示例:
day := "Monday"
switch day {
case "Monday":
fmt.Println("今天是周一")
case "Friday":
fmt.Println("今天是周五")
default:
fmt.Println("不是周一也不是周五")
}
2. 一个 case
匹配多个值
switch time.Now().Weekday() {
case time.Saturday, time.Sunday:
fmt.Println("周末休息")
default:
fmt.Println("工作日")
}
3. 不加表达式,使用逻辑判断
score := 85
switch {
case score >= 90:
fmt.Println("优秀")
case score >= 60:
fmt.Println("及格")
default:
fmt.Println("不及格")
}
4. 支持 fallthrough
强制进入下一分支(默认不会自动贯穿)
i := 2
switch i {
case 1:
fmt.Println("One")
fallthrough
case 2:
fmt.Println("Two") // 会被执行
}
三、if
与 switch
的选择建议
情况 | 推荐语句 |
单一条件判断 | if |
多条件、枚举类型匹配 | switch |
多值匹配或逻辑清晰分支 | switch |
简单判断+临时变量声明 | if (带初始化) |
四、小结
- •
if
更灵活、适合少量条件; - •
switch
更结构化,适合多分支判断; - • 支持在条件语句中声明局部变量;
- •
switch
默认不贯穿,用fallthrough
显式声明。