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

Go语言中的条件判断主要靠 if、else if、else 和 switch 实现,语法简洁,不支持括号包裹条件表达式,且 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 中带初始化语句
常用于临时变量判断,避免污染外层作用域。
立即学习“go语言免费学习笔记(深入)”;
- 初始化语句后必须跟分号
- 该变量只在
if、else if、else块中可见
示例:
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,能写出更健壮、可读性更强的代码。










