变量与常量
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
)