由于map的key仅限于基本类型,所以当想使用"结构体"当key时,只能使用其指针作为key。又由于map经常使用range进行遍历或者存取数据,这就出现问题啦?
例如,
func main() {
type A {
b int
c string
}
d := make(map[*A]int)
i := 0
for _, v := range s {
i++
d[&v]=i
}
println(len(d))
}
结果,
1
你知道为什么吗?这是因为在使用for, range时,变量v的内存地址是不变。所以要赋值内存地址的时候,赋值&s[i],而不是&v