Golang 中的巢狀映射
在 Golang 中,巢狀對應可用於建立分層資料結構。但是,使用巢狀映射時可能會出現一些意外行為。
多括號支援
Go 支援多個括號來存取巢狀對應。例如,以下程式碼成功列印與鍵「w」相關的值:
func main() { var data = map[string]map[string]string{} data["a"]["w"] = "x" data["b"]["w"] = "x" data["c"]["w"] = "x" fmt.Println(data) }
Nil Map
當巢狀對應不存在時,就會出現問題已初始化。地圖類型的零值為 nil。對 nil 映射建立索引將導致運行時錯誤。例如,如果將上述程式碼修改如下:
func main() { var data = map[string]map[string]string{} data["a"]["w"] = "x" data["b"]["w"] = "x" data["c"]["w"] = "x" fmt.Println(data) }
程式將失敗並出現錯誤:
panic: runtime error: assignment to entry in nil map要解決此問題,必須在先前初始化巢狀映射為其條目賦值:
func main() { var data = map[string]map[string]string{} data["a"] = map[string]string{} data["b"] = make(map[string]string) data["c"] = make(map[string]string) data["a"]["w"] = "x" data["b"]["w"] = "x" data["c"]["w"] = "x" fmt.Println(data) }或者,複合文字可用來初始化巢狀地圖:
以上是如何安全處理 Go 中的巢狀映射並避免執行階段錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!