Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何创建地图<;字符串,列表<;SomeClass>&燃气轮机;在围棋中?_Go - Fatal编程技术网

Go 如何创建地图<;字符串,列表<;SomeClass>&燃气轮机;在围棋中?

Go 如何创建地图<;字符串,列表<;SomeClass>&燃气轮机;在围棋中?,go,Go,如何在Go中创建地图?比如: var m map[string]list m = make(map[string]list) 你在寻找映射[字符串][]SomeClass 然而,你使用make的方式并不能解决这个问题。我个人建议使用复合文字语法进行初始化,如下所示: m := map[string][]SomeClass { "a": []SomeClass{SomeClass{SomeProperty: SomeValue}} } 如果你想使用make,你必须遍历映射并为每个键

如何在Go中创建
地图
?比如:

var m map[string]list
m = make(map[string]list)

你在寻找<代码>映射[字符串][]SomeClass

然而,你使用make的方式并不能解决这个问题。我个人建议使用复合文字语法进行初始化,如下所示:

m := map[string][]SomeClass {
      "a": []SomeClass{SomeClass{SomeProperty: SomeValue}}
}
如果你想使用make,你必须遍历映射并为每个键调用make,或者该键的
[]SomeClass
数组将为nil。我的语法初始化如下;最外面的大括号用于映射,在它里面我声明一个键“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
是否有钥匙,如果有,然后我将
模型
附加到带钥匙的切片上,否则,我将用模型实例化一个新切片。当然,这不是实际的工作代码,但它应该会给你一些想法。如果你能提供一个更完整的例子(比如你想放在地图上的汽车数据样本),那么我可以根据你的需要来做更多的调整,但我希望这能给你一个大致的想法。

你正在寻找的<代码>映射[字符串][]SomeClass

然而,你使用make的方式并不能解决这个问题。我个人建议使用复合文字语法进行初始化,如下所示:

m := map[string][]SomeClass {
      "a": []SomeClass{SomeClass{SomeProperty: SomeValue}}
}
如果你想使用make,你必须遍历映射并为每个键调用make,或者该键的
[]SomeClass
数组将为nil。我的语法初始化如下;最外面的大括号用于映射,在它里面我声明一个键“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
是否有钥匙,如果有,然后我将
模型
附加到带钥匙的切片上,否则,我将用模型实例化一个新切片。当然,这不是实际的工作代码,但它应该会给你一些想法。如果您提供了一个更完整的示例(如您想放在地图中的汽车数据示例),那么我可以根据您的需要对其进行更多的修改,但我希望这将为您提供总体思路。

我尝试的是迭代对象列表并创建地图。假设我有一个汽车对象列表,汽车对象既有make也有model。我想迭代列表并创建一个地图,其中键是make,模型在地图值中作为汽车对象列表。“做这件事最好的方法是什么?”desiJoe编辑了一个可能让你朝着正确方向前进的例子。如果您需要进一步的指导,并且可以更新更多的信息,我可以提供一个更具体的示例。您不需要If语句
append
将nil切片视为空切片(大多数函数也是如此)。@MadameElyse感谢您指出这一点,这样的代码更简单。我尝试的是迭代对象列表并创建一个映射。假设我有一个汽车对象列表,汽车对象既有make也有model。我想迭代列表并创建一个地图,其中键是make,模型在地图值中作为汽车对象列表。“做这件事最好的方法是什么?”desiJoe编辑了一个可能让你朝着正确方向前进的例子。如果您需要进一步的指导,并且可以更新更多的信息,我可以提供一个更具体的示例。您不需要If语句
append
将nil片视为空片(大多数函数也是如此)。@MadameElyse感谢您指出这一点,这样代码就简单多了。