【发布时间】:2020-05-26 08:49:54
【问题描述】:
AMap := make(map[int]int)
BMap := make(map[int]map[int]int)
var usersK []int
for i := 0; i < 10; i++ {
var k int
fmt.Scan(&k)
AMap[k]++
BMap[i] = AMap
}
在这种情况下,BMap 中的所有值都是同一个映射。如何通过值而不是引用传递 AMap。
【问题讨论】:
-
地图是对底层结构的引用。如果你想传递地图的副本,你必须逐个元素地复制它并传递它。
-
按值传递映射是不可能的,因为映射不是值。它是一组值,需要引用。
-
@zerkms,
unsafe.Sizeof(map[string]string{}) = 4。 Map 是一个指向结构体的指针。 -
@zerkms 关键是它是一个指针,至少在这个实现中是这样。
-
@zerkms 很好。映射是指向描述映射的结构的指针...
标签: go