Есть две проблемы, которые я не понимаю.
Во-первых, одна переменная слайса назначается другой переменной, и обнаруживается, что адрес новой переменной не совпадает с адресом переменной. Насколько я понимаю, срез разделяет память, и их адреса совпадают в соответствии с принципом.
Второй - тогда, когда переменная среза имеет недостаточную емкость, адрес памяти не изменяется после операции добавления. Он должен меняться в соответствии с принципом, потому что адрес памяти будет выделен заново при недостаточной емкости.
Буду признателен за ваши комментарии.
var a = []int{1,2,3}
fmt.Printf("%p\n",&a)
b:=a
fmt.Printf("%p\n",&b) 1)、the first question
b=append(b,0)
fmt.Printf("%p\n",&b) 2)、the second question
fmt.Println(a)
fmt.Println(b)
Результат выполнения:
0xc04204c3a0
0xc04204c3e0
0xc04204c3e0
[1 2 3]
[1 2 3 0]