我怎么能写一个地图数组[golang]

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)