Sobes.tech
Junior — Middle

Може ли стойността nil да се използва като итерационен елемент за map в цикъл?

sobes.tech AI

Отговор от AI

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

Ако стойността в map е указател или интерфейс, тя може да бъде nil, и това е нормално. Но самият итератор не може да бъде nil.

Пример:

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

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

Тук v може да бъде nil, но цикълът range върху map работи правилно.