解析:
上述代码输出结果如下:
key: 0, value: 3 key: 1, value: 3 key: 2, value: 3 key: 3, value: 3
for range 循环的时候会创建每个元素的副本,而不是元素的引用,所以 m [key] = &val 取的都是变量 val 的地址,所以最后 map 中的所有元素的值都是变量 val 的地址,因为最后 val 被赋值为 3,所有输出都是 3.