运行时错误:分配到无地图条目

我正在尝试生成一个映射,然后将其转换为像这样的yaml文件:

uid : kasi: cn: Chaithra street: fkmp nandan: cn: Chaithra street: fkmp remya: cn: Chaithra street: fkmp 

我想我在创build地图的时候丢失了一些重要的东西。 我的代码如下。

 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 { //t := T{cn: "Chaithra", street: "fkmp"} m["uid"][name] = T{cn: "Chaithra", street: "fkmp"} } fmt.Println(m) y, _ := yaml.Marshal(&m) fmt.Println(string(y)) //fmt.Println(m, names) } 

它给出了以下错误:

 panic: runtime error: assignment to entry in nil map 

你还没有初始化你的内部地图。 在for循环之前,可以添加m["uid"] = make(map[string]T) ,然后分配名称。

您应该检查映射是否为零,如果在for循环中为零,则初始化映射:

 if m["uid"] == nil { m["uid"] = map[string]T{} }