Map в Go — хеш-таблица. Под капотом структура hmap с массивом бакетов. Каждый бакет хранит до 8 пар ключ-значение.
При заполнении больше чем на ~6.5 элементов на бакет — map растёт вдвое. Старые бакеты копируются в новые постепенно (incremental growth).
m := make(map[string]int)
m["key"] = 42
val, ok := m["key"] // ok = true
Важно: map НЕ потокобезопасна. Конкурентная запись = panic. Нужен sync.RWMutex или sync.Map.
Порядок итерации через range — рандомный, специально. Go сознательно рандомизирует чтобы разработчики не завязывались на порядок.