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