首頁 >後端開發 >Golang >如何安全處理 Go 中的巢狀映射並避免執行階段錯誤?

如何安全處理 Go 中的巢狀映射並避免執行階段錯誤?

Linda Hamilton
Linda Hamilton原創
2024-12-12 21:06:23931瀏覽

How to Safely Handle Nested Maps in Go and Avoid Runtime Errors?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn