Sobes.tech
Junior — Middle

Lze hodnotu nil použít jako iterativní prvek pro mapu v cyklu?

sobes.tech AI

Odpověď od AI

V Go nelze hodnotu nil použít jako prvek iterace pro map v cyklu, protože range přes map vrací klíč a hodnotu a nil znamená absenci hodnoty.

Pokud je hodnota v map ukazatel nebo rozhraní, může být nil, což je normální. Ale samotný iterátor nemůže být nil.

Příklad:

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

for k, v := range m {
    pokud v == nil {
        fmt.Printf("klíč %s obsahuje nil hodnotu\n", k)
    } else {
        fmt.Printf("klíč %s obsahuje hodnotu %d\n", k, *v)
    }
}

Zde může být v nil, ale cyklus range přes map funguje správně.