地圖的零值
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"