zhuts 1b3c2942d4 feat: 新增第二课变量基础与第三课条件判断例程 il y a 4 jours
..
README.md 1b3c2942d4 feat: 新增第二课变量基础与第三课条件判断例程 il y a 4 jours
main.go 1b3c2942d4 feat: 新增第二课变量基础与第三课条件判断例程 il y a 4 jours

README.md

第 03 课:if 条件判断

学习目标

第二课用变量保存数据,本课根据数据决定执行哪段代码。按 main.go 中的 1~6 节逐段手敲、运行,暂不引入循环和键盘输入。

本课独占一个目录,共享根目录的 go.mod,不需要安装第三方依赖或重新初始化模块。

核心语法

if 条件 {
    // 条件成立
} else if 另一个条件 {
    // 前面的条件不成立,且当前条件成立
} else {
    // 前面的条件都不成立
}
  • 条件必须是 bool 类型,不像 C 那样可以用非零整数表示真。
  • 条件通常不加圆括号,大括号不能省略,左大括号与条件写在同一行。
  • else 与前面的 } 写在同一行。
  • 多分支从上到下判断,只执行第一个满足条件的分支,其余分支跳过。
  • 多个独立的 if 则会分别判断,不等于一个 if / else if 链。

比较与逻辑运算

运算符 含义 示例
== 相等 language == "Go"
!= 不相等 score != 100
>、>= 大于、大于等于 age >= 18
<、<= 小于、小于等于 score <= 100
&& 并且,两侧都为真 age >= 18 && hasTicket
\|\| 或者,至少一侧为真 score < 0 \|\| score > 100
! 取反 !isClosed

= 是赋值,== 才是比较相等。&& 和 || 会短路求值:左侧已经能决定结果时,不再计算右侧。

编译并运行

以下命令在仓库根目录执行:

# 创建第三课的输出目录
New-Item -ItemType Directory -Force bin/03_conditions | Out-Null

# 编译第三课
go build -o ./bin/03_conditions/conditions.exe ./lessons/03_conditions

# 运行生成的程序
.\bin\03_conditions\conditions.exe

修改源码后,要再次编译,旧的 exe 不会自动更新。

快速编译并运行也可以使用:

go run ./lessons/03_conditions

或者从仓库根目录进入本课后执行:

Set-Location lessons/03_conditions
go run .

go run 仍会先编译再运行,不是解释执行。

预期输出

=== 单条件判断 ===
年龄:20,已成年

=== 是否及格 ===
分数:75,及格

=== 成绩等级 ===
等级:及格

=== 逻辑运算 ===
已成年、有票且未闭馆,可以入场
周末或节假日,可以安排休息

=== 相等与不相等 ===
当前学习的语言是 Go
本次成绩不是满分

=== 显式布尔条件 ===
数量不为零

动手练习

  • 把 age 改为 17,观察成年判断和入场判断的变化。
  • 将 score 依次改为 59、60、79、80、89、90、100,检查分数边界。
  • 将 score 改为 -1 或 101,观察成绩等级的非法分数提示。前面的“是否及格”只是二分支语法示范,尚未验证范围;试着给它也加入范围检查。
  • 把 hasTicket 改为 false,或把 isClosed 改为 true,观察入场结果。
  • 把 isWeekend 和 isHoliday 都改为 false,观察休息提示是否还会输出。
  • 把 count 改为 0,观察最后一条提示是否消失。

先手动验证这些输入,不急着封装函数或引入更复杂测试。下一课再学习 for 循环。

上一课:变量与基础类型 · 学习总览