Как проверить наличие значения в Map

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

Ответ

Для проверки наличия ключа в map используется комбинация из двух значений, возвращаемых при доступе к элементу: самого значения и флага существования.

m := map[string]int{"foo": 42}

value, exists := m["foo"]
// exists == true, value == 42

value, exists = m["bar"]
// exists == false, value == 0 (zero-value для int)

Если нужно только проверить наличие ключа без получения значения, можно использовать пустой идентификатор _:

if _, exists := m["foo"]; exists {
    // ключ существует
}

Важно: при обращении к несуществующему ключу возвращается zero-value для типа значения, поэтому проверка только значения (val := m["foo"]) ненадежна.