Назад к вопросам
JuniorТеорияОчень часто
Что выведет программа?
package main
import "fmt"
func main() {
s := []int{1, 2}
t := append(s, 3)
t[0] = 9
fmt.Println(s[0], len(s), len(t))
}1 2 3
- Ждать
9 2 3: уsнет свободной ёмкости, поэтомуappendкопирует элементы в новый массив, иt[0] = 9меняет только копию. - Ждать
1 3 3или ошибку:appendне меняет самs, а заполненный срез — не ошибка, он просто переезжает в массив побольше.
- Какой коэффициент роста использует Go при перевыделении в
appendи почему? - После перевыделения в
appendвидят ли изменение прежние срезы?