从Golang中的一个map生成一个字典映射。

huangapple go评论87阅读模式
英文:

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{})
    // ...
}

https://play.golang.org/p/v-RaL2fswp

huangapple
  • 本文由 发表于 2015年12月13日 00:27:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/34242185.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定