zhuts 1b3c2942d4 feat: 新增第二课变量基础与第三课条件判断例程 пре 4 дана
..
README.md 1b3c2942d4 feat: 新增第二课变量基础与第三课条件判断例程 пре 4 дана
main.go 1b3c2942d4 feat: 新增第二课变量基础与第三课条件判断例程 пре 4 дана

README.md

第 02 课:变量、常量与基础类型

怎么学习

打开 main.go,按注释中的 1~7 节顺序照着敲一遍。每敲完一节,可以先运行,再继续下一节。不需要安装第三方依赖,也不需要重新初始化模块。

如果想保留参考代码并另外手敲:在本课下创建 practice/ 目录,在里面新建自己的 main.go。从仓库根目录用 go run ./lessons/02_variables/practice 运行;不要在本课同一目录里再创建第二个 main 函数。

本课知识点

写法 含义 注意
var age int = 18 指定类型和初始值 类型写在变量名后面
var city = "上海" 由初始值推断类型 这里推断为 string
lesson := 2 短变量声明 仅限函数内部
age = 19 给已有变量赋新值 不是重新声明
age, score := 20, 95 声明新变量并给已有变量赋值 同一作用域内至少有一个新变量
const courseName = "Go 语言基础" 声明常量 不能重新赋值
var count int 使用零值初始化 整数零值是 0
float64(quantity) 显式类型转换 不会改变原变量类型

先掌握四种类型:int(整数)、float64(浮点数)、string(字符串)、bool(布尔值)。

Go 不会自动把 int 变量转为 float64 来参与混合运算。浮点数转整数会向零截断,例如 int(7.5) 的结果是 7,不是四舍五入。

运行

在仓库根目录执行:

go run ./lessons/02_variables

或从根目录进入本课:

Set-Location lessons/02_variables
go run .

预期输出:

=== 个人资料 ===
姓名:小朱,年龄:18,正在学习 Go:true
城市:上海,类型:string
当前是第 2 课,修改后的年龄:19
再次修改后的年龄:20,分数:95
课程:Go 语言基础

=== 零值 ===
int:0,float64:0.0,string:"",bool:false

=== 购物计算 ===
数量:3,单价:2.50,总价:7.50
数量类型:int,单价类型:float64,总价类型:float64
总价转为整数:7,原总价仍为:7.50

编译

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

New-Item -ItemType Directory -Force bin/02_variables | Out-Null
go build -o ./bin/02_variables/variables.exe ./lessons/02_variables
.\bin\02_variables\variables.exe

go build 保留可执行文件;go run 先编译再直接运行。修改源码后,可执行文件需要重新编译才会更新。

输出占位符

占位符 用途
%s 字符串
%d 十进制整数
%t 布尔值
%.2f 浮点数,输出保留两位小数
%q 带引号的字符串,方便观察空字符串
%T 值的类型
\n 换行

注意:%.2f 只是控制输出格式,不会把变量变成“精确的两位小数”。float64 可能存在精度误差,本例仅用于学习,实际金额处理需要另行设计。

动手练习

  • 把姓名、城市和年龄改成自己的资料。
  • 将 learning 改为 false,观察输出。
  • 将商品数量改成 4、单价改成 3.25,核对总价 13.00。
  • 改为只计算 quantity * unitPrice,观察编译器的类型错误,再恢复转换。
  • 尝试给 courseName 重新赋值,观察常量不能修改的报错,再恢复。
  • 声明一个没有使用的局部变量,观察编译错误,再删除或使用它。

故意制造错误的练习一次只做一个,观察后恢复可编译状态。不要同时保留多处错误。

本课先专注变量与类型,不额外引入测试框架或函数封装。下一课再学习 if 条件判断。

上一课:第一个 Go 程序 · 学习总览