Продолжается цикл статей про внутреннее устройство Go. Эта статья разбирает внутреннее устройство трёх ключевых структур Go: срезов, мап и каналов.
Автор объясняет, что срез - это всего лишь 24-байтовый заголовок: указатель на массив, длина и емкость. А увеличение среза происходит с коэффициентами от 2x до 1.25x.
Мапы, начиная с Go 1.24, реализованы через Swiss Tables и представляют собой иерархию: хеш-таблица указателей - таблицы - группы по 8 слотов, что позволяет эффективно проверять ключи через 7-битные "предпросмотры".
Каналы — это структура hchan с кольцевым буфером, мьютексом и очередями ожидающих горутин
Основной посыл: за лаконичным синтаксисом Go стоят сложные, но высокопроизводительные рантайм-структуры
Ну вы и так все знаете
15.05.2026
Похожее
29.06.2026
Детектор утечек горутин
В Go 1.27 в runtime/pprof добавляется встроенный детектор утечек горутин, принят...
26.06.2026
Мидделвари лимитеров
При использовании цепочки мидлварей, которые выполняют какие-то ограничения, в G...
23.06.2026
Рефлексия
Статья о том, как устроен пакет reflect в Go. Он, кстати, не вычисляет как-то хи...
22.06.2026
Зеро аллокации
Все мы знаем, что пустая структура struct{} в Go действительно занимает ноль бай...