Как работает 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? Он создает копию среза в другом адресе?


Ответы (0 шт):