Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > go if else条件语句

Go 语言if else 条件语句使用教程(流程控制)

作者:jieyucx

本文介绍了Go语言的ifelse条件语句及其应用场景,包括单分支、双分支和多分支的语法格式和注意事项,还讲解了Go语言中if语句的初始化表达式特性及嵌套ifelse用法,并通过综合实战案例巩固知识点,最后,总结了常见错误及避坑指南

大家好~上一篇博客我们掌握了 Go 语言的运算符与控制台输入输出,能实现简单的计算和交互。本篇我们正式进入流程控制的学习——if else 条件语句,它是程序“做判断、分分支”的核心,也是后续学习循环、函数的基础。

和之前一样,所有知识点都搭配可直接复制运行的代码示例,零基础也能轻松上手,学完就能写出有判断逻辑的 Go 程序,彻底告别“顺序执行”的单一模式!

一、前置准备

继续使用我们的 GoStudy 项目,新建文件夹 ifelse,创建 main\.go 文件,所有测试代码均在此文件中编写运行。

基础代码结构(复制即可):

package main
import "fmt"
func main() {
    // 所有if else测试代码写在这里
}

核心说明:流程控制的作用是“让程序根据条件执行不同的代码”,就像生活中“如果下雨就带伞,否则就不带”,if else 就是实现这种逻辑的关键语法。

二、if else 核心语法(3种常用场景)

Go 语言的 if else 语法简洁、严谨,有明确的语法规范,主要分为「单分支」「双分支」「多分支」三种场景,我们逐一讲解,重点注意语法细节(新手易踩坑)。

1. 单分支:if 语句(满足条件才执行)

最基础的判断:如果某个条件为真,就执行一段代码;条件为假,就跳过这段代码

语法格式(必须严格遵循):

if 条件表达式 {
    // 条件为 true 时,执行的代码
}

关键注意点(必看):

示例代码(判断年龄是否成年):

package main
import "fmt"
func main() {
    // 定义年龄变量
    age := 19
    // 单分支判断:如果年龄大于等于18,打印成年
    if age >= 18 {
        fmt.Println("你已成年,具备独立民事行为能力")
    }
    // 条件为假时,跳过上面的代码,执行下面的语句
    fmt.Println("程序执行完毕")
}

运行结果:

你已成年,具备独立民事行为能力
程序执行完毕

补充:如果将 age 改为 17,运行结果只会打印“程序执行完毕”,因为 age \>= 18false,跳过了 if 内部的代码。

2. 双分支:if else 语句(二选一)

场景:如果条件为真,执行一段代码;如果条件为假,执行另一段代码,两个分支必执行一个,互不冲突。

语法格式:

if 条件表达式 {
    // 条件为 true 时,执行的代码
} else {
    // 条件为 false 时,执行的代码
}

关键注意点(必看):

示例代码(判断成绩是否及格):

package main
import "fmt"
func main() {
    // 定义成绩变量(结合上一篇的输入知识,接收用户输入)
    var score int
    fmt.Print("请输入你的考试成绩:")
    fmt.Scan(&score)
    // 双分支判断:及格与否
    if score >= 60 {
        fmt.Printf("你的成绩是 %d 分,及格啦!🎉\n", score)
    } else {
        fmt.Printf("你的成绩是 %d 分,未及格,需要补考哦~\n", score)
    }
}

运行结果(两种情况):

请输入你的考试成绩:85
你的成绩是 85 分,及格啦!🎉

请输入你的考试成绩:58
你的成绩是 58 分,未及格,需要补考哦~

3. 多分支:if else if else 语句(多选一)

场景:有多个条件需要判断,依次检查每个条件,满足哪个条件就执行对应的代码;所有条件都不满足,执行最后的 else 代码(else 可选)。

适合需要分等级、分场景的判断(如成绩分级、年龄分段)。

语法格式:

if 条件1 {
    // 条件1为 true 时,执行的代码
} else if 条件2 {
    // 条件1为 false、条件2为 true 时,执行的代码
} else if 条件3 {
    // 条件1、2为 false、条件3为 true 时,执行的代码
} else {
    // 所有条件都为 false 时,执行的代码(可选)
}

关键注意点(必看):

示例代码(成绩分级):

package main
import "fmt"
func main() {
    var score int
    fmt.Print("请输入你的成绩:")
    fmt.Scan(&score)
    // 多分支判断成绩等级
    if score >= 90 {
        fmt.Printf("成绩 %d 分,等级:优秀🌟\n", score)
    } else if score >= 80 {
        fmt.Printf("成绩 %d 分,等级:良好👍\n", score)
    } else if score >= 60 {
        fmt.Printf("成绩 %d 分,等级:及格✅\n", score)
    } else {
        fmt.Printf("成绩 %d 分,等级:不及格❌\n", score)
    }
    fmt.Println("成绩分级完成!")
}

运行结果(四种情况):

请输入你的成绩:95
成绩 95 分,等级:优秀🌟
成绩分级完成!

请输入你的成绩:88
成绩 88 分,等级:良好👍
成绩分级完成!

请输入你的成绩:65
成绩 65 分,等级:及格✅
成绩分级完成!

请输入你的成绩:59
成绩 59 分,等级:不及格❌
成绩分级完成!

小贴士:多分支的条件顺序很重要!比如“score >= 60”不能放在“score >= 80”前面,否则 80 分以上的成绩也会被判断为“及格”,因为条件判断会“自上而下”执行,满足第一个条件就会终止后续判断。

三、Go 特色:if 语句的初始化表达式(高频用法)

Go 语言的 if 语句有一个非常实用的特性:可以在 if 条件前添加一个初始化语句,用于定义变量,变量的作用域仅限于整个 if else 结构内部(外部无法访问),能简化代码、避免变量污染。

语法格式:

if 变量初始化; 条件表达式 {
    // 变量可在此处使用
} else if ... {
    // 变量也可在此处使用
} else {
    // 变量也可在此处使用
}

关键说明:

示例代码(简化输入判断):

package main
import "fmt"
func main() {
    // 简化写法:在if中初始化变量score,同时判断条件
    if score := 85; score >= 90 {
        fmt.Println("优秀")
    } else if score >= 80 {
        fmt.Println("良好")
    } else {
        fmt.Println("及格或不及格")
    }
    // 错误示例:score 仅在上面的if else中有效,此处无法访问
    // fmt.Println(score) // 编译报错:undefined: score
}

补充示例(结合输入):

package main
import "fmt"
func main() {
    // 一次性完成:初始化变量、接收输入、判断条件
    if var age int; fmt.Print("请输入年龄:"); fmt.Scan(&age) {
        if age >= 18 {
            fmt.Println("成年")
        } else {
            fmt.Println("未成年")
        }
    }
}

四、嵌套 if else(进阶用法)

场景:在一个 if 或 else 分支内部,再嵌套另一个完整的 if else 结构,用于处理“多层判断”的场景(如“先判断是否成年,成年后再判断是否有驾照”)。

语法格式(简化):

if 条件1 {
    // 条件1为true,执行此处
    if 条件2 {
        // 条件1和条件2都为true,执行此处
    } else {
        // 条件1为true、条件2为false,执行此处
    }
} else {
    // 条件1为false,执行此处
}

关键注意点(必看):

示例代码(多层判断:是否能开车):

package main
import "fmt"
func main() {
    var age int
    var hasLicense bool // 布尔值:true=有驾照,false=无驾照
    fmt.Print("请输入你的年龄:")
    fmt.Scan(&age)
    fmt.Print("你是否有驾照(true=有,false=无):")
    fmt.Scan(&hasLicense)
    // 第一层判断:是否成年
    if age >= 18 {
        fmt.Println("你已成年,符合开车的年龄要求")
        // 第二层判断:是否有驾照
        if hasLicense {
            fmt.Println("恭喜你,可合法开车!")
        } else {
            fmt.Println("你没有驾照,不可开车,需先考驾照~")
        }
    } else {
        fmt.Println("你未成年,不可开车!")
    }
}

运行结果(三种情况):

// 情况1:成年+有驾照
请输入你的年龄:22
你是否有驾照(true=有,false=无):true
你已成年,符合开车的年龄要求
恭喜你,可合法开车!

// 情况2:成年+无驾照
请输入你的年龄:20
你是否有驾照(true=有,false=无):false
你已成年,符合开车的年龄要求
你没有驾照,不可开车,需先考驾照~

// 情况3:未成年
请输入你的年龄:16
你是否有驾照(true=有,false=无):true
你未成年,不可开车!

五、综合实战案例(结合之前知识点)

结合「控制台输入」「运算符」「if else」,实现一个“学生成绩评级+奖学金判断”的完整程序,巩固本篇所有知识点。

需求:

完整代码:

package main
import "fmt"
func main() {
    // 1. 接收用户输入三科成绩
    var chinese, math, english int
    fmt.Print("请输入语文、数学、英语三科成绩(空格分隔):")
    fmt.Scan(&chinese, &math, &english)
    // 2. 计算平均分(浮点型,避免整数取整误差)
    average := (chinese + math + english) / 3.0
    // 3. 输出成绩信息
    fmt.Printf("语文:%d 分,数学:%d 分,英语:%d 分\n", chinese, math, english)
    fmt.Printf("三科平均分:%.1f 分\n", average)
    // 4. 多分支判断成绩等级
    var level string
    if average >= 90 {
        level = "优秀"
    } else if average >= 80 {
        level = "良好"
    } else if average >= 60 {
        level = "及格"
    } else {
        level = "不及格"
    }
    fmt.Printf("成绩等级:%s\n", level)
    // 5. 嵌套判断奖学金(只有优秀、良好才有机会)
    if average >= 80 {
        if average >= 95 {
            fmt.Println("恭喜你,获得一等奖学金!🏆")
        } else if average >= 85 {
            fmt.Println("恭喜你,获得二等奖学金!🎊")
        } else {
            fmt.Println("无奖学金,继续努力哦~")
        }
    } else {
        fmt.Println("无奖学金,继续努力哦~")
    }
}

运行结果示例:

请输入语文、数学、英语三科成绩(空格分隔):96 98 94
语文:96 分,数学:98 分,英语:94 分
三科平均分:96.0 分
成绩等级:优秀
恭喜你,获得一等奖学金!🏆

六、新手常见错误(避坑指南)

七、本篇总结

本篇的 if else 是流程控制的基础,下一篇我们将学习另一个核心——for 循环语句,学会循环后,就能实现重复执行的逻辑(如猜数字游戏、批量处理数据),继续加油!

到此这篇关于Go 语言if else 条件语句使用教程(流程控制)的文章就介绍到这了,更多相关go if else条件语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文