如何在Golang中实现简单条件判断_if else和switch示例

Go语言条件判断用if/else和switch,if不加括号、支持初始化语句,switch默认不穿透、支持值匹配与无表达式多条件判断。

Go语言中的条件判断主要靠 ifelse ifelseswitch 实现,语法简洁,不支持括号包裹条件表达式,且 if 可带初始化语句,switch 默认自动 break(无需显式写 fallthrough 才继续执行下一分支)。

基础 if else 用法

Go 的 if 后面不加括号,条件必须是布尔表达式;else 必须和 if 的右大括号在同一行,否则编译报错。

  • 支持在 if 前添加短变量声明,作用域仅限该分支块内
  • 多个条件用 &&(与)、||(或),不支持 and/or 关键字
  • else if 可以连续使用,没有最大数量限制

示例:

score := 85
if score >= 90 {
    fmt.Println("优秀")
} else if score >= 80 {
    fmt.Println("良好")
} else if score >= 60 {
    fmt.Println("及格")
} else {
    fmt.Println("不及格")
}

if 中带初始化语句

常用于临时变量判断,避免污染外层作用域。

  • 初始化语句后必须跟分号
  • 该变量只在 ifelse ifelse 块中可见

示例:

if num := 42; num%2 == 0 {
    fmt.Println(num, "是偶数")
} else {
    fmt.Println(num, "是奇数")
}
// fmt.Println(num) // 编译错误:undefined: num

switch 基本用法

Go 的 switch 更灵活:表达式可以是任意类型(支持字符串、整型、接口等),每个 case 值必须是可比较的常量或字面量,且默认不穿透(即匹配成功后自动跳出)。

  • 支持逗号分隔多个值(类似 case 1, 2, 3:
  • 支持条件表达式(称为“无表达式 switch”),此时 case 后直接写布尔表达式
  • default 分支可选,位置任意(但建议放最后)

示例(匹配值):

day := "Monday"
switch day {
case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday":
    fmt.Println("工作日")
case "Saturday", "Sunday":
    fmt.Println("周末")
default:
    fmt.Println("未知日期")
}

switch 用作多条件判断(无表达式)

当不提供 switch 后的表达式时,每个 case 就是独立布尔判断,适合逻辑较复杂、不易枚举的场景。

  • 相当于一连串 if else if else,但更清晰易读
  • case 按顺序执行判断,命中第一个为 true 的即执行并退出

示例:

age := 25
switch {
case age < 0:
    fmt.Println("年龄不能为负")
case age < 18:
    fmt.Println("未成年")
case age < 60:
    fmt.Println("成年人")
default:
    fmt.Println("老年人")
}

Go 的条件判断设计强调简洁与安全,比如强制花括号、无隐式类型转换、默认无 fallthrough,这些都降低了出错概率。掌握好 if 初始化和无表达式 switch,能写出更健壮、可读性更强的代码。