Go 中文网、思否、博客园等平台,内容主要以问答形式记录。如果回答中有错误,欢迎大家指出,共同学习、共同进步。
Go每日一题_191
下面这段代码输出什么,说明原因。 package main import "fmt" func main() { slice := []int{0, 1, 2, 3} m := make(map[int]*int) for key, val := range slice { m[key] = &val } for k, v := range m { fmt.Println(k, "->", *v) } } 🔑 答案解析: Go1.22 版本之前 0 -> 3 1 -> 3 2 -> 3 3 -> 3 Go1.22 版本之后 0 -> 0 1 -> 1 2 -> 2 3 -> 3 Go在线运行 Go1.22 之前 for range 循环的时候会key, val的地址是不会变化的,所以输出都是3