В статье объясняется, как работают подсказки ёмкости (capacity hints) в Go для срезов и карт. Срезы имеют явную капасити - это максимальное количество элементов, которое можно в них хранить до перераспределения памяти.
В отличие от срезов, у мап нет понятия фиксированной ёмкости, а капасити является только приблизительной оценкой количества элементов. Для небольших капасити (до 8 элементов) Go использует ленивое выделение памяти: при создании мапы память под бакеты не выделяется, а первый бакет создаётся только при первой вставке элемента.
Для больших капасити Go сразу рассчитывает оптимальное количество бакетов, необходимое для поддержания коэффициента загрузки (6.5 пар на бакет), и выделяет память с запасом, чтобы избежать преждевременных расширений карты
27.02.2026
Похожее
29.05.2026
Что нового в Go
Go - "скучный" в самом хорошем смысле этого слова: стабильный, надежный и создан...
28.05.2026
Дженерик методы
Ура! В Go теперь можно будет объявлять параметризованные методы для типов, ко...
28.05.2026
Рейт лимитинг
Автор разбирает три основных алгоритма рейт лимитинга в Go: Token Bucket в библи...
27.05.2026
Регрессия на 3%
Порция байтоебства на сегодня Автор расследовал регрессию производительности ...