package main
const N = 3
func main() {
	m := make(map[int]*int)
	for i := 0; i < N; i++ {
		m[i] = &i //A
	}
	for _, v := range m {
		print(*v)
	}
}结果是
333
原因是
- 循环的 k,v 的地址在循环的时候是不变的
- 循环内声明的变量,每次都是不一样的
- 存 k 和 v 的地址并不会计算出来然后存起来,而是存的「k 和 v 的地址」这个概念,所以最后所有的值指向的都是最后一次循环的地址
所以重点就是 i 每次都是那个 i,p 每次都不是那个 p(作用域知识)
所以需要在循环内部申请局部变量存 i,然后把他的地址赋给 map
package main
const N = 3
func main() {
	m := make(map[int]*int)
	for i := 0; i < N; i++ {
		p := i
		m[i] = &p //A
	}
	for _, v := range m {
		print(*v)
	}
}