Как работает Map?

Junior
1.1k просмотров
AFK Offer AI

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 раза больше. Рехеширование инкрементальное — данные переносятся постепенно.

Следующий вопрос

Горутины — что это?