Go条件语句if-else
Go if语句简洁,条件无需括号,支持条件内声明变量。
if基本语法
基本结构
Go
// 基本if语句
if condition {
// 条件为true执行
}
// 示例
age := 18
if age >= 18 {
fmt.Println("成年人")
}
条件表达式无需括号,代码块必须用大括号。
条件表达式
Go
// 任意返回bool的表达式
if a > b {
fmt.Println("a大于b")
}
if len(s) > 0 {
fmt.Println("字符串非空")
}
if ok {
fmt.Println("ok为true")
}
if-else分支
else分支
Go
if age >= 18 {
fmt.Println("成年人")
} else {
fmt.Println("未成年人")
}
else-if多分支
Go
if score >= 90 {
fmt.Println("优秀")
} else if score >= 80 {
fmt.Println("良好")
} else if score >= 60 {
fmt.Println("及格")
} else {
fmt.Println("不及格")
}
条件内声明变量
初始化语法
Go
// 条件内声明变量,作用域在if块内
if n := len(s); n > 0 {
fmt.Println("长度:", n)
}
// n仅在if块内可见
fmt.Println(n) // 编译错误!
结合函数调用
Go
// 函数返回值直接判断
if err := doSomething(); err != nil {
fmt.Println("出错:", err)
}
// 获取并判断
if file, err := os.Open("data.txt"); err == nil {
file.Close()
}
条件内声明的变量仅在if-else块内可见。
嵌套if语句
嵌套结构
Go
if a > 0 {
if b > 0 {
fmt.Println("a和b都大于0")
} else {
fmt.Println("a>0, b<=0")
}
}
避免深层嵌套
Go
// 深层嵌套不推荐
if a > 0 {
if b > 0 {
if c > 0 {
// ...
}
}
}
// 推荐:提前返回或合并条件
if a <= 0 || b <= 0 || c <= 0 {
return
}
// 处理正常情况
if语句特性
| 特性 | 说明 |
|---|---|
| 条件无括号 | 直接写条件表达式 |
| 代码块必括号 | {}不可省略 |
| 条件内声明 | 变量作用域在块内 |
| else可选 | 单分支无需else |
| else-if多分支 | 处理多种情况 |
if使用示例
Go
func process(n int) {
// 条件内声明
if abs := abs(n); abs > 100 {
fmt.Println("绝对值过大:", abs)
return
}
// 多分支
if n > 0 {
fmt.Println("正数")
} else if n < 0 {
fmt.Println("负数")
} else {
fmt.Println("零")
}
}
要点总结
- 条件表达式无需括号,代码块必须有{}
- else和else-if用于多分支处理
- 条件内声明变量,作用域在if-else块内
- 变量声明后直接判断,语法简洁
- 避免深层嵌套,使用提前返回优化
- if语句是Go最基本的条件控制
📝 发现内容有误?点击此处直接编辑