模块 1 · 第 1 课(共 5)课程中的1/50~10 min
模块课程(1/5)
变量和类型
在 Go 中,每个变量都有一个编译器已知的静态类型:一次 声明后,变量不能更改类型。这种刚性——非常不同 来自 JavaScript 或 Python — 是获得编译时间所付出的代价 错误而不是运行时错误、小二进制文件且可预测 性能。
两种申报形式
具有显式类型的 var
Go
var name string = "Ada"
var age int = 36
var active bool当您省略该值(如 var active bool 中)时,变量会接收
其类型的零值——我们将在下一课中讨论这一点。
简短声明 :=
在函数内部,您可以使用 :=,它从
右边的表达式。这是惯用的形式,也是您将使用的形式
90%的时间:
Go
name := "Ada" // string
age := 36 // int
pi := 3.14 // float64
active := true // bool您马上就会遇到的基本类型
| 类型 | 示例 | 笔记 |
|---|---|---|
int | 42 | 大小取决于 CPU(32 或 64 位) |
float64 | 3.14 | 十进制文字的默认值 |
string | "Ada" | UTF-8,不可变 |
bool | true、false | 没有“truthy”,只有纯布尔 |
rune | 'A' | int32 的别名,表示 Unicode 代码点 |
byte | 0x7F | 0x7F uint8 的别名 |
还有 int8/16/32/64、uint8/16/32/64、float32 和 complex64/128
当您需要精确的大小时(二进制解析、互操作等)。
多重声明
您可以使用 var 块或复数 := 声明多个变量:
Go
var (
name string = "Ada"
age int = 36
active bool
)
x, y := 10, 20
a, b, c := "a", 2, true // different types: no problem已声明但未使用的变量
Go 是严格的:声明但从未使用的变量是编译
错误,而不是警告。这同样适用于未使用的 import。
Go
func main() {
x := 42
// error: x declared and not used
}要暂时静默规则,您可以使用 _ (空白标识符):
Go
_ = x轮到你了
锻炼#go.m1.l1.e1
尝试:0加载中...
使用 var 声明一个字符串类型的变量名,值为“Ada”并打印它。
正在加载编辑器...
显示提示
长格式为“var <名称> <类型> = <值>”。
3 次尝试后可用的解决方案
锻炼#go.m1.l1.e2
尝试:0加载中...
在一行中,使用 := 将 36 分配给年龄,并将“Roma”分配给城市,然后打印两者。
正在加载编辑器...
显示提示
您可以一次分配多个变量:`a, b := 1, "due"`。
3 次尝试后可用的解决方案
Quiz#go.m1.l1.e3
准备好如果将这些声明放在函数外部,哪一个会产生编译错误?
Go
// (a)
var name string = "Ada"
// (b)
age := 36
// (c)
const PI = 3.14回顾
- 静态类型,由
:=自动推断或用var声明。 :=仅在函数内部;仅在包级别var/const。- 未使用的变量和导入 = 编译错误:使用
_来静默它们。 int/float64/string/bool涵盖 90% 的日常情况。