Sobes.tech
Junior — Middle

Használható a nil érték iterációs elemként a map esetében egy ciklusban?

sobes.tech MI

Válasz az MI-től

Go-ban a nil értéket nem lehet map-hez tartozó iterációs elemként használni, mert a range a map-en kulcsot és értéket ad vissza, és a nil az érték hiányát jelenti.

Ha a map értéke pointer vagy interfész, akkor lehet nil, és ez normális. De az iterátor maga nem lehet nil.

Példa:

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

for k, v := range m {
    ha v == nil {
        fmt.Printf("kulcs %s tartalmaz nil értéket\n", k)
    } else {
        fmt.Printf("kulcs %s tartalmazza az értéket %d\n", k, *v)
    }
}

Itt v lehet nil, de a map-en való range helyesen működik.