Как можно оптимизировать увеличение capacity слайса, чтобы избежать лишних аллокаций и копирований?

Если ожидаемый размер известен, заранее выделите capacity через make([]T, 0, n). Это уменьшает число перераспределений и копирований при append.

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

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

Если ожидаемый размер известен, заранее выделите capacity через make([]T, 0, n). Это уменьшает число перераспределений и копирований при append.

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

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

Если ожидаемый размер известен, заранее выделите capacity через make([]T, 0, n). Это уменьшает число перераспределений и копирований при append.

Не путайте длину и ёмкость: make([]T, n) уже создаёт n элементов, а последующий append добавит новые после них. Для неизвестного размера используйте разумную оценку или обработку порциями. Не полагайтесь на точную формулу роста capacity как на контракт языка. Слишком большой запас удерживает память, поэтому оптимизацию лучше подтверждать профилем аллокаций.

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

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

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

Подробнее