Map в Go — хеш-таблица. Внутри: массив бакетов, каждый бакет хранит до 8 пар key-value.
Алгоритм: 1. Вычисляется хеш ключа 2. Младшие биты определяют номер бакета 3. Старшие биты (tophash) используются для быстрого поиска внутри бакета 4. При переполнении бакета создаётся overflow bucket
m := make(map[string]int)
m["key"] = 42 // O(1) вставка
val := m["key"] // O(1) чтение
delete(m, "key") // O(1) удаление
При достижении load factor (~6.5 элементов на бакет) происходит рехеширование — создаётся новый массив бакетов в 2 раза больше. Рехеширование инкрементальное — данные переносятся постепенно.