Map в Go — это хеш-таблица с бакетами. Каждый бакет хранит до 8 пар ключ-значение. При коллизии элементы попадают в тот же бакет или в overflow-бакет (цепочка).
Структура: hmap содержит count, массив бакетов и hash seed. Ключ хешируется, младшие биты определяют номер бакета, старшие — позицию внутри бакета (tophash для быстрого сравнения).
При заполнении (load factor > 6.5) происходит инкрементальное расширение — создаётся новый массив бакетов в 2 раза больше, данные переносятся постепенно при каждой операции записи. Поэтому итерация по map рандомизирована — порядок не гарантирован.