GO语言的零值

零值核心概念

  • 定义:在 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)

(注:字符串零值输出为空行,在 0false 之间有一行空白)

小结

  • 零值机制:与上一节“声明变量”呼应,仅声明(如 var quantity int)不赋值,系统自动赋予零值,避免了“未初始化”的随机值风险。
  • 类型安全:结合“静态类型”特性,Go 不仅检查赋值的类型匹配,还确保变量从诞生起就有合法的默认值(数字为 0,布尔为 false,字符串为空)。
  • 对比记忆:数字类零值是 0,布尔是 false,字符串是 ""。理解零值有助于后续学习指针、切片、结构体等复杂类型的默认行为。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注