首頁 >後端開發 >Golang >如何解決 Golang「運行時錯誤:分配給 nil 映射中的條目」錯誤?

如何解決 Golang「運行時錯誤:分配給 nil 映射中的條目」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-12-13 20:10:15514瀏覽

How to Resolve the Golang

使用Golang Map 解決「運行時錯誤:分配給nil 映射中的條目」

在Go 中使用映射時,重要的是要確保在存取映射或為其賦值之前,映射已正確初始化。錯誤訊息「運行時錯誤:指派給nil映射中的條目」表示您正在嘗試修改尚未初始化的映射中的鍵值對。

讓我們分析一下中提到的程式碼片段問題:

import (
    "fmt"
    "gopkg.in/yaml.v2"
)

type T struct {
    cn     string
    street string
}

func main() {
    names := []string{"kasi", "remya", "nandan"}

    m := make(map[string]map[string]T, len(names))
    for _, name := range names {
        m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
    }
    fmt.Println(m)

    y, _ := yaml.Marshal(&m)

    fmt.Println(string(y))
}

程式碼的問題在於以下行:

m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}

這裡,您正在嘗試存取和修改映射“m”中指定鍵“uid”和“name”處的值。但是,您尚未初始化鍵“uid”的內部映射。結果,映射「m」只有一個鍵,它是一個空映射。當您嘗試存取和修改“m”uid”處的內部映射時,運行時會遇到 nil指標錯誤,因為鍵“uid”尚未初始化。完成此操作:

此行初始化沒有值的鍵“uid”的內部映射,確保您可以在循環期間訪問和修改它。
m["uid"] = make(map[string]T)

透過此修改,您的程式碼將成功運行,並產生預期的輸出。

以上是如何解決 Golang「運行時錯誤:分配給 nil 映射中的條目」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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