【发布时间】:2017-07-16 19:31:08
【问题描述】:
我正在尝试使用另一个映射 r 的键和值重命名映射 o 的键。
下面的尝试似乎失败了,原因我猜想与我在修改地图的同时也在覆盖它的事实有关——我得到了一个额外的blank 键。
我可以简单地将地图复制到一个新的目标地图,但是地图是一个更复杂的结构的一部分——所以任何尝试都需要我对该结构进行某种递归深度复制,我宁愿这样做避免。
o := make(map[string]string) // original map
r := make(map[string]string) // replacement map original -> destination keys
o["a"] = "x"
o["b"] = "y"
r["a"] = "1"
r["b"] = "2"
fmt.Println(o) // -> map[a:x b:y]
for k, v := range o {
o[r[k]] = v
}
delete(o, "a")
delete(o, "b")
fmt.Println(o) // -> map[1:x 2:y :y]
我希望这会打印出map[1:x 2:y]。
【问题讨论】:
标签: go