条件语句:if 与 switch -《Go语言实战指南》

66 阅读1分钟

在程序中,我们常常需要依据不同的条件执行不同的代码逻辑。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.Saturdaytime.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 显式声明。