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.