Sobes.tech
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.