Ответ
В Go поиск в map реализован через хеш-таблицу. При доступе к элементу по ключу:
- Вычисляется хеш ключа
- По хешу определяется бакет (корзина)
- В бакете ищется точное совпадение ключа
Пример:
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показывает наличие ключа - Не гарантируется порядок итерации