英文:
Produce a dictionary map from a map in golang
问题
这是我试图在playground上运行的代码:http://play.golang.org/p/zX1G50txzf
我有这个map:
map[producer:Tesla model:Model S year:2015]
我想将其转换为:
[map[field:producer value:Tesla] map[field:model value:S] map[field:year value:2015]]
但最后我得到的是:
[map[field:year value:2015] map[field:year value:2015] map[field:year value:2015]]
看起来每次循环迭代原始map时,我复制的是引用而不是值,所以最后我得到的是最后一个值重复了3次,而不是每个值各一次。
我在这里漏掉了什么?
提前谢谢。
英文:
This is the code that I am trying to make run on playground: http://play.golang.org/p/zX1G50txzf
I have this map:
map[producer:Tesla model:Model S year:2015]
and I want turn this into this :
[map[field:producer value:Tesla] map[field:model value:S] map[field:year value:2015]]
but in the end I will get this:
[map[field:year value:2015] map[field:year value:2015] map[field:year value:2015]]
Looks like every time the loop iterate over the original map, I am copying the reference instead of the value, so I end up with the last value replicated 3 times, instead of one of each.
What am I missing here?
Thanks in advance.
答案1
得分: 3
在循环的每次迭代中,需要创建一个新的temp
映射。否则,你只是在覆盖同一个映射:
for key, value := range res {
temp := make(map[string]interface{})
// ...
}
点击此处查看示例代码。
英文:
A new temp
map needs to be created on each iteration of the loop. Otherwise, you are just overwriting the same map:
for key, value := range res {
temp := make(map[string]interface{})
// ...
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论