Post Thumbnail

Продолжается цикл статей про внутреннее устройство Go. Эта статья разбирает внутреннее устройство трёх ключевых структур Go: срезов, мап и каналов.

Автор объясняет, что срез - это всего лишь 24-байтовый заголовок: указатель на массив, длина и емкость. А увеличение среза происходит с коэффициентами от 2x до 1.25x.

Мапы, начиная с Go 1.24, реализованы через Swiss Tables и представляют собой иерархию: хеш-таблица указателей - таблицы - группы по 8 слотов, что позволяет эффективно проверять ключи через 7-битные "предпросмотры".

Каналы — это структура hchan с кольцевым буфером, мьютексом и очередями ожидающих горутин

Основной посыл: за лаконичным синтаксисом Go стоят сложные, но высокопроизводительные рантайм-структуры

Ну вы и так все знаете

Похожее

Post Thumbnail

TigerFS

Файловая система — это просто API. А TigerFS — это файловая система, работающая ...

Post Thumbnail

Иггдрасиль

В статье про использование Yggdrasil в качестве встраиваемой Go-библиотеки. ...

Post Thumbnail

Мультиплеер

В статье автор рассказывает про архитектуру управления состоянием своей многопол...

Post Thumbnail

httptrace

Пакет net/http/httptrace из стандартной библиотеки Go позволяет отслеживать внут...