У меня есть код:
//initialize a slice
arr := make([]int, 0)
arr = append(arr, 1, 2)
for _, k := range arr {
fmt.Printf("%p %+v\n", &k, k)
}
//make a copy, but the element is a pointer
arrP := make([]*int, 0)
for _, k := range arr {
arrP = append(arrP, &k)
}
//why arrP is different with arr?
for _, k := range arrP {
fmt.Printf("%p %+v\n", k, *k)
}
результаты:
0xc000018088 1
0xc000018088 2
0xc000090000 2
0xc000090000 2
мои вопросы :
почему адрес такой же?
почему значение arrP [0] не равно 1?