我正在尝试创建一个“关联”地图。问题在于superMap收集了aMap的所有值。基本上,即使我想在每次查找时仅存储amap的一个实例,我最终也会存储当前实例以及所有先前的循环。
supermap[value] = amap[value]
。
然而下面的代码段存储的是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