Sobes.tech
Назад к вопросам
Junior — Middle
89

Можно ли использовать значение nil в качестве итерационного элемента для map в цикле?

Компании, где спрашивали
Кадровое агентство BWG

Ответ от нейросети

sobes.tech AI

В Go значение nil нельзя использовать как итерационный элемент для map в цикле, потому что range по map возвращает ключ и значение, а nil — это отсутствие значения.

Если значение в map является указателем или интерфейсом, то оно может быть nil, и это нормально. Но сам итератор не может быть nil.

Пример:

m := map[string]*int{
    "a": nil,
    "b": new(int),
}

for k, v := range m {
    if v == nil {
        fmt.Printf("ключ %s содержит nil значение\n", k)
    } else {
        fmt.Printf("ключ %s содержит значение %d\n", k, *v)
    }
}

Здесь v может быть nil, но сам цикл range по map работает корректно.