Как реализован поиск в Map в Go

«Как реализован поиск в Map в Go» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go поиск в map реализован через хеш-таблицу. При доступе к элементу по ключу:

  1. Вычисляется хеш ключа
  2. По хешу определяется бакет (корзина)
  3. В бакете ищется точное совпадение ключа

Пример:

m := map[string]int{"foo": 42}
value, ok := m["foo"] // ok = true, value = 42
value, ok = m["bar"]  // ok = false, value = 0

Особенности:

  • Время поиска O(1) в среднем случае
  • При отсутствии ключа возвращается нулевое значение типа
  • Флаг ok показывает наличие ключа
  • Не гарантируется порядок итерации