Sobes.tech
Junior — Middle

Kan de waarde nil worden gebruikt als iteratie-element voor map in een lus?

sobes.tech AI

Antwoord van AI

In Go kan de waarde nil niet worden gebruikt als iteratie-element voor map in een lus, omdat range over map de sleutel en waarde retourneert, en nil de afwezigheid van een waarde betekent.

Als de waarde in map een pointer of interface is, kan deze nil zijn, en dat is normaal. Maar de iterator zelf kan niet nil zijn.

Voorbeeld:

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

for k, v := range m {
    if v == nil {
        fmt.Printf("sleutel %s bevat nil waarde\n", k)
    } else {
        fmt.Printf("sleutel %s bevat waarde %d\n", k, *v)
    }
}

Hier kan v nil zijn, maar de range-lus over map werkt correct.