Назад к вопросам
Бюро 1440
Senior
11
Чем отличается slice от array в Go и как работает append?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go массив (array) — это структура фиксированного размера, размер которой задаётся при объявлении и не может изменяться. Например:
var arr [3]int // массив из 3 элементов
Срез (slice) — это динамический, изменяемый по размеру тип, который представляет собой ссылку на часть массива. Он содержит указатель на массив, длину и ёмкость.
var s []int // срез, может расти
Функция append добавляет элементы в срез. Если текущая ёмкость среза недостаточна, создаётся новый массив с увеличенной ёмкостью, данные копируются, и возвращается новый срез:
s := []int{1, 2}
s = append(s, 3, 4)
Таким образом, append позволяет динамически расширять срезы, в отличие от массивов с фиксированным размером.