Sobes.tech
Back to questions
Senior
10

Чем отличается slice от array в Go и как работает append?

Companies where asked
Бюро 1440Бюро 1440

Answer from AI

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 позволяет динамически расширять срезы, в отличие от массивов с фиксированным размером.