如何在Go中创建Map<String, List<SomeClass>>
?类似的东西:
var m map[string]list
m = make(map[string]list)
答案 0 :(得分:4)
你正在寻找; map[string][]SomeClass
然而,你使用make的方式不会削减它。我个人建议使用复合文字语法进行初始化,它看起来像这样;
m := map[string][]SomeClass {
"a": []SomeClass{SomeClass{SomeProperty: SomeValue}}
}
如果你想使用make,你必须遍历地图并为每个键调用make,否则该键的[]SomeClass
数组将为零。我的语法初始化如下;最外面的大括号用于地图,在其中我声明一个单词“a”并初始化一个SomeClass切片,在切片内我初始化一个SomceClass设置SomeProperty到SomeValue的实例。
如果您非常喜欢使用make,无论出于什么原因我都可以添加另一个以这种方式初始化集合的示例,我发现它更复杂。
编辑:
这里的一些示例更接近您可能正在寻找的内容
var m map[string][]Model
m = make(map[string][]Model)
for i, _ := range Cars {
m[Cars[i].Make] = append(m[Cars[i].Make], Cars[i].Model)
}
在这个例子中我初始化地图,然后我开始迭代“cars”数组。对于每辆车我检查是否有一个密钥Make
如果有,那么我将Model
附加到具有该密钥的切片,否则,我用模型实例化一个新切片。当然,这不是实际的工作代码,但它应该给你一些想法。如果你提供一个更完整的例子(比如你想要放在地图上的汽车数据样本),那么我可以根据你的需要量身定做,但我希望这会给你一般的想法。