Junior — Middle
Czy można użyć wartości nil jako elementu iteracyjnego dla mapy w pętli?
sobes.tech AI
Odpowiedź od AI
W Go wartość nil nie może być używana jako element iteracji dla map w pętli, ponieważ range po map zwraca klucz i wartość, a nil oznacza brak wartości.
Jeśli wartość w map jest wskaźnikiem lub interfejsem, może być nil, co jest normalne. Ale sam iterator nie może być nil.
Przykład:
m := map[string]*int{
"a": nil,
"b": new(int),
}
for k, v := range m {
if v == nil {
fmt.Printf("klucz %s zawiera wartość nil\n", k)
} else {
fmt.Printf("klucz %s zawiera wartość %d\n", k, *v)
}
}
Tutaj v może być nil, ale pętla range po map działa poprawnie.