|
|
il y a 4 jours | |
|---|---|---|
| .. | ||
| README.md | il y a 4 jours | |
| main.go | il y a 4 jours | |
第二课用变量保存数据,本课根据数据决定执行哪段代码。按 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 循环。