Как растёт слайс в Go?

Append увеличивает длину слайса; если capacity недостаточно, выделяет новый базовый массив, копирует элементы и возвращает новый дескриптор. Точная формула роста не является контрактом Go.

Короткий ответ

Что ответить на собеседовании

Append увеличивает длину слайса; если capacity недостаточно, выделяет новый базовый массив, копирует элементы и возвращает новый дескриптор. Точная формула роста не является контрактом Go.

Подробный разбор

Ответ с пояснениями

Append увеличивает длину слайса; если capacity недостаточно, выделяет новый базовый массив, копирует элементы и возвращает новый дескриптор. Точная формула роста не является контрактом Go.

Поэтому результат append нужно сохранять. При достаточной ёмкости несколько слайсов могут продолжать ссылаться на общий массив, и изменение элементов будет видно через другие ссылки. Для известного размера полезно заранее выделить capacity. Нельзя рассчитывать, что ёмкость всегда удваивается или что append обязательно разрывает совместное владение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее