В статье объясняется, как работают подсказки ёмкости (capacity hints) в Go для срезов и карт. Срезы имеют явную капасити - это максимальное количество элементов, которое можно в них хранить до перераспределения памяти.
В отличие от срезов, у мап нет понятия фиксированной ёмкости, а капасити является только приблизительной оценкой количества элементов. Для небольших капасити (до 8 элементов) Go использует ленивое выделение памяти: при создании мапы память под бакеты не выделяется, а первый бакет создаётся только при первой вставке элемента.
Для больших капасити Go сразу рассчитывает оптимальное количество бакетов, необходимое для поддержания коэффициента загрузки (6.5 пар на бакет), и выделяет память с запасом, чтобы избежать преждевременных расширений карты
27.02.2026
Похожее
13.07.2026
Активация сокетов
Автор рассказывает, как с помощью сокет-активации systemd запускать Go-сервис то...
09.07.2026
Джину уже 12 лет
Ману Мартинес-Алмейда рассказывает историю как он создавал Gin - одного из самых...
08.07.2026
zero-copy-оптимизации
Разбор zero-copy-оптимизаций в Go. Когда вы передаете `*os.File` напрямую `в...
07.07.2026
WAL-RUS
ClickHouse Cloud переписали утилиту для бэкапов и WAL-архивирования Postgres с G...