地图的零值

map 的零值是 nil,长度为 0

var m map[string]string
fmt.Println(m == nil) // true
fmt.Println(len(m) ==0) // true

nil 地图没有按键也无法添加按键。如果从中读取,则 nil 映射的行为类似于空映射,但如果写入则会导致运行时出现混乱。

var m map[string]string

// reading
m["foo"] == "" // true. Remember "" is the zero value for a string
_, ok = m["foo"] // ok == false

// writing
m["foo"] = "bar" // panic: assignment to entry in nil map

你不应该尝试读取或写入零值映射。相反,在使用之前初始化地图(使用 make 或赋值)。

var m map[string]string
m = make(map[string]string) // OR m = map[string]string{}
m["foo"] = "bar"