ep 1
func main() {
a := []int{1, 2, 3}
var t []*int
for _, s := range a {
t = append(t, &s)
}
fmt.Println(t)
}
ep 1输出结果
[0xc00007e020 0xc00007e020 0xc00007e020]
注:在for _, s := range a 循环中,s的地址是不变的,整个过程类似
var s int
a := []int{1, 2, 3}
for i := 0; i < len(a); i ++ {
s = a[i]
t = append(t, &s)
}
将代码修改为如下
func main() {
a := []int{1, 2, 3}
var t []*int
for _, s := range a {
b := s
t = append(t, &b)
}
fmt.Println(t)
}
输出如下:
[0xc000016060 0xc000016068 0xc000016070]
可以看出地址发生了改变