package main
import "fmt"
func main() {
slice := []int{1, 2, 3, 4}
m := make(map[int]*int)
for key, value := range slice {
m[key] = &value
}
for key, value := range m {
fmt.Println(key, "->", *value)
}
}
关于以上代码 首先map里面存储的是int的key和地址
for key, value := range slice {
m[key] = &value // key值是不断变化的,但是value 是同一个地址 value的值是不断变化的
}
for key, value := range m {
fmt.Println(key, "->", *value) // map里面的值还是 上一个value的地址,一直没有释放,但是那块地址现在存的数字为4, 所以打印出来的所有值都为4
}
最终map里面存入的key 和 value值为
m[0] = 4
m[1] = 4
m[2] = 4
m[3] = 4