В Go срез (slice) состоит из трех полей: указатель на базовый массив, длина (len) и емкость (capacity).
- Длина (len): Количество элементов, фактически содержащихся в срезе. Это число доступных для использования элементов.
- Емкость (capacity): Количество элементов от начала среза до конца базового массива. Это максимальное возможное количество элементов, которое может быть добавлено в срез без перераспределения (создания нового базового массива).
go
При добавлении элементов в срез с использованием функции append, если текущая длина среза достигает его емкости, Go создает новый базовый массив большей емкости, копирует в него старые элементы и обновляет указатель среза.