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 работи правилно.