Sobes.tech
Junior — Middle

Môže sa hodnota nil použiť ako iteratívny prvok pre mapu v cykle?

sobes.tech AI

Odpoveď od AI

V Go, hodnota nil nemôže byť použitá ako prvok iterácie pre map v cykle, pretože range cez map vracia kľúč a hodnotu a nil znamená absenciu hodnoty.

Ak je hodnota v map ukazovateľ alebo rozhranie, môže byť nil, čo je normálne. Ale samotný iterátor nemôže byť nil.

Príklad:

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

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

Tu, v môže byť nil, ale cyklus range cez map funguje správne.