由于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