Append увеличивает длину слайса; если capacity недостаточно, выделяет новый базовый массив, копирует элементы и возвращает новый дескриптор. Точная формула роста не является контрактом Go.
Как растёт слайс в Go?
Append увеличивает длину слайса; если capacity недостаточно, выделяет новый базовый массив, копирует элементы и возвращает новый дескриптор. Точная формула роста не является контрактом Go.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Append увеличивает длину слайса; если capacity недостаточно, выделяет новый базовый массив, копирует элементы и возвращает новый дескриптор. Точная формула роста не является контрактом Go.
Поэтому результат append нужно сохранять. При достаточной ёмкости несколько слайсов могут продолжать ссылаться на общий массив, и изменение элементов будет видно через другие ссылки. Для известного размера полезно заранее выделить capacity. Нельзя рассчитывать, что ёмкость всегда удваивается или что append обязательно разрывает совместное владение.