零值核心概念
- 定义:在 Go 中,如果声明一个变量而没有显式赋值,该变量会自动包含其对应类型的零值。
- 特性:零值不一定是数字
0。对于不同的数据类型,零值有其特定的“空”或“默认”状态。这是 Go 语言静态类型安全的重要体现,确保变量始终有确定的值。
各类型零值对照
结合前几节的基础类型,零值规则如下:
| 数据类型 | 零值 | 说明 |
|---|---|---|
int (整数) | 0 | 数字类型的零值实际为 0 |
float64 (浮点数) | 0 (或 0.0) | 同上 |
bool (布尔) | false | “假”是其默认无效状态 |
string (字符串) | "" (空字符串) | 非 nil,而是长度为 0 的字符串 |
rune (符文) | 0 | 底层为 int32,对应空字符 |
代码演示与解析
package main
import "fmt"
func main() {
var quantity int
var length, width float64
var customername string
var isNumber bool
fmt.Println(quantity) // 输出: 0
fmt.Println(length) // 输出: 0
fmt.Println(width) // 输出: 0
fmt.Println(customername) // 输出: "" (空行,无可见字符)
fmt.Println(isNumber) // 输出: false
}Code language: JavaScript (javascript)
运行输出结果:
0
0
0
falseCode language: JavaScript (javascript)
(注:字符串零值输出为空行,在 0 和 false 之间有一行空白)
小结
- 零值机制:与上一节“声明变量”呼应,仅声明(如
var quantity int)不赋值,系统自动赋予零值,避免了“未初始化”的随机值风险。 - 类型安全:结合“静态类型”特性,Go 不仅检查赋值的类型匹配,还确保变量从诞生起就有合法的默认值(数字为 0,布尔为 false,字符串为空)。
- 对比记忆:数字类零值是
0,布尔是false,字符串是""。理解零值有助于后续学习指针、切片、结构体等复杂类型的默认行为。