【发布时间】:2014-04-15 01:40:02
【问题描述】:
我正在尝试创建一个“关联”地图。问题是 superMap 收集了 aMap 的所有值。
基本上,即使我只想在每个外观上存储一个 amap 实例,我最终也会存储当前实例以及所有先前的循环。 supermap[value] = amap[value] 。但是下面的 sn-p 存储 supermap[value] = amap。原因是我找不到任何方法来解决这个问题。如果我在每个循环之后删除 aMap 的旧值,它们也会从 supermap 中删除。
package main
import (
"fmt"
)
func main() {
aData := map[int]string{
0: "apple",
1: "samsung",
2: "htc",
3: "sony",
}
dir := []string{"user", "doc", "bin", "src"}
aMap := make(map[int]string)
superMap := make(map[string]map[int]string)
for k, v := range dir {
aMap[k] = aData[k]
superMap[v] = aMap
}
hello(superMap)
}
func hello(superMap map[string]map[int]string) {
fmt.Printf("superMap of user is %v \n", superMap["user"])
cnt := len(superMap["user"])
if cnt > 1{
fmt.Printf("expected only one value received %v", cnt)
}
}
【问题讨论】:
-
将
aMap创建移动到 for 循环中 -
@Arjan 这是一个陷阱,不是吗?我想知道为什么当你重新初始化地图时它可以工作,但当你删除它时它却不起作用。