全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-14 5 分钟 ✍️ juanwangdev

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最基本的条件控制

📝 发现内容有误?点击此处直接编辑

← 上一篇 Go条件分支语句switch-case
下一篇 → Go跳转语句break和continue
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库