Mengatasi Ralat Masa Jalan dalam Tugasan Peta
Pemaju menghadapi ralat masa jalan "tugasan untuk masuk dalam peta sifar" semasa cuba mencipta peta dan tukarkannya kepada YAML. Kod ini bertujuan untuk menghasilkan struktur seperti ini:
uid : kasi: cn: Chaithra street: fkmp nandan: cn: Chaithra street: fkmp remya: cn: Chaithra street: fkmp
Kod yang dimaksudkan adalah seperti berikut:
package main 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)) }
Ralat berpunca daripada fakta bahawa peta dalaman, "uid" , tidak dimulakan sebelum memberikan nilai kepada entrinya. Untuk membetulkan isu ini, kod boleh diubah suai seperti berikut:
package main 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)) m["uid"] = make(map[string]T) // Initialize the inner map here for _, name := range names { m["uid"][name] = T{cn: "Chaithra", street: "fkmp"} } fmt.Println(m) y, _ := yaml.Marshal(&m) fmt.Println(string(y)) }
Dengan memulakan peta dalaman, kami memastikan ia wujud dan boleh diberikan nilai tanpa menimbulkan ralat masa jalan. Pelarasan ini membolehkan kod menjana struktur peta yang diingini dan berjaya menukarnya kepada YAML.
Atas ialah kandungan terperinci Mengapa Kod My Go Menghasilkan Ralat 'tugasan untuk masuk dalam peta kosong' Semasa Mencipta Peta YAML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!