Как работает append
обьясните пожалуйста, как append работает с памятью.
если есть один срез, у которго каждый элемент ссылается на определенный адрес в памяти, то я могу изменить значение по этому адресу другой функцией и мне не нужно для этого чтобы эта другая функция вызвращала что либо, мне достаточно, чтобы она работала со значением по тому же адресу в который вызывающая функция положила значние. Почему же, если я пытаюсь в другой функции одно значение изменить явно по индексу, а остальные заполнить с помощью append то то что я изменил по индексу будет изменено, а то что я попытался изменить с помощью append нет.
func someAction(v []int8, b int8) {
println(&v[0])
v[0] = 100
//нулевой индекс изменится а остальное нет
v = append(v, b)
}
func main() {
var a = []int8{1, 2, 3, 4, 5}
println(&a[0]) //тот же самй адрес в памяти что и v[0] в someAction.
someAction(a, 6)
fmt.Println(a)
}
С какими адресами памяти работает append? Он создает копию среза в другом адресе?