Z
ZHANK
入门基础

变量与常量

var/:= 短声明、零值、const/iota 枚举、多变量赋值

变量与常量

Go 变量声明的特色::= 短声明(类型自动推导)、零值保证(没有未初始化变量)、iota 枚举。

学完本章你将: 掌握 var/:=、零值、const/iota、多变量赋值。


变量声明

go
package main

import "fmt"

func main() {
    // 标准声明
    var name string = "小明"
    var age int = 25
    var active bool  // 未赋值 → 零值 false

    // 短声明 :=(类型自动推导,最常用)
    score := 92.5
    city := "北京"

    // 批量声明
    var (
        width  = 100
        height = 200
    )

    // 多变量赋值
    a, b := 10, 20
    a, b = b, a  // 交换(Go 特有,简洁!)

    fmt.Println(name, age, score, city)
}

零值 —— 不会被遗忘的初始化

go
var i int       // 0
var f float64   // 0.0
var s string    // ""(空字符串,不是 nil)
var b bool      // false
var p *int      // nil
var m map[string]int  // nil

💡 Go 没有未初始化变量——所有变量都有零值。这消除了 C 语言中"忘初始化"导致的随机垃圾 bug。


const 与 iota

go
// 常量
const Pi = 3.14159
const (
    StatusOK    = 200
    StatusError = 500
)

// iota —— 自动递增枚举器
const (
    Monday = iota + 1  // 1
    Tuesday            // 2
    Wednesday          // 3
)

const (
    _  = iota         // 跳过 0
    KB = 1 << (10 * iota)  // 1<<10 = 1024
    MB                     // 1<<20
    GB                     // 1<<30
)