我正在尝试生成地图,然后将其转换为yaml文件,如下所示:
uid : kasi: cn: Chaithra street: fkmp nandan: cn: Chaithra street: fkmp remya: cn: Chaithra street: fkmp
我想我在创建地图时缺少一些重要的东西。我的代码如下。
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)然后分配名称。
m["uid"] = make(map[string]T)