|
|
пре 4 дана | |
|---|---|---|
| .. | ||
| README.md | пре 4 дана | |
| main.go | пре 4 дана | |
打开 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 条件判断。