Junior — Middle
Welke acties zijn toegestaan met een variabele van het type Map die nog niet is geïnitialiseerd?
sobes.tech AI
Antwoord van AI
In Go heeft een variabele van het type map standaard de waarde nil als deze niet geïnitialiseerd is.
Met een map nil zijn de volgende acties toegestaan:
- Waarde lezen op basis van een sleutel — retourneert de nulwaarde van het type en een indicator dat de sleutel niet bestaat.
- Controleren of een sleutel bestaat met
value, ok := map[key].
Niet-toegestane operaties:
- Schrijven (toewijzen van een waarde aan een sleutel) zal een panic veroorzaken.
- Het aanroepen van functies die de kaart wijzigen (bijvoorbeeld
delete) op eennil-kaart is veilig en veroorzaakt geen panic.
Voorbeeld:
var m map[string]int // m == nil
v, ok := m["key"] // ok == false, v == 0
// m["key"] = 10 // panic: toewijzing aan entry in nil map
delete(m, "key") // veilig, doet niets
Om een map te gebruiken voor schrijven, moet deze geïnitialiseerd worden, bijvoorbeeld met make:
m = make(map[string]int)
m["key"] = 10 // werkt nu