The*_*hat 9 arrays go data-structures
我有一个地图,其值为一组地图.
例:
thisMap["coins"][0] = aMap["random":"something"]
thisMap["notes"][1] = aMap["not-random":"something else"]
thisMap["coins"][2] = aMap["not-random":"something else"]
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何做到这一点go似乎只允许在处理时在一个级别设置数据maps [name][value] = value.
到目前为止,我有这个代码失败了
package main
func main() {
something := []string{"coins", "notes", "gold?", "coins", "notes"}
thisMap := make(map[string][]map[string]int)
for k, v := range something {
aMap := map[string]string{
"random": "something",
}
thisMap[v] = [k]aMap
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:切片值("硬币","注释"等)可以重复,所以这就是我需要使用索引的原因[].
nem*_*emo 13
工作示例(点击播放):
something := []string{"coins", "notes", "gold?"}
thisMap := make(map[string][]map[string]int)
for _, v := range something {
aMap := map[string]int{
"random": 12,
}
thisMap[v] = append(thisMap[v], aMap)
}
Run Code Online (Sandbox Code Playgroud)
迭代新创建的时thisMap,您需要为新值腾出空间aMap.内置函数append在使用切片时为您执行此操作.它腾出空间并将值附加到切片上.
如果您正在使用无法像切片一样轻松初始化的更复杂数据类型,则首先必须检查密钥是否已在映射中,如果不是,则初始化数据类型.此处记录了检查地图元素.地图示例(点击播放):
thisMap := make(map[string]map[string]int)
for _, v := range something {
if _, ok := thisMap[v]; !ok {
thisMap[v] = make(map[string]int)
}
thisMap[v]["random"] = 12
}
Run Code Online (Sandbox Code Playgroud)