с len, cap = 3.
myslice := []string{"one", "two","three"}
Передаю его в функцию, делаю в функции аппенд. Т.к слайс расширяется логично что го создаст новый массив и скопирует старый массив в новый. И изначальный массив не поменяется. (Тут все ок)
2) создаю слайс через make([]string, 0, 500). У slice capacity = 500. Т.е я могу спокойно добавлять 500 элементов не увеличивая массив(не копируя его из одного места в другое). Но почему-то когда я передаю его в функцию, в которой делаю аппенд, то в мейне у меня изначально массив никак не меняется? Ведь под капотом один и тот массив, я ведь передаю указатель на него.
могу в личку playground скинуть
Код на playground
потому что append добавляет элемент и увеличивает len
https://play.golang.org/p/bsc8ZH9RG4S
но мы же по факту добавляем элемент в массив на который ссылается изначальный слайс
в вашем случае len не изменился
Массивы не меняются
если вы распечатаете fmt.Println(xxx[0:7]), то увидите что qwe добавился
https://play.golang.org/p/hSkJNg6GwiC
Обсуждают сегодня