Sobes.tech
Junior — Middle

Wat is het verschil tussen een kaart met een null-waarde en een slice die een null-waarde bevat?

sobes.tech AI

Antwoord van AI

In Go is een kaart (map) met nulwaarde een kaart die niet geïnitialiseerd is en gelijk is aan nil. Een poging om in zo'n kaart te schrijven leidt tot een panic.

Een slice met nulwaarde is een nil-slice, die niet naar een array wijst en een lengte en capaciteit van 0 heeft. Het kan veilig worden gebruikt, bijvoorbeeld voor lezen of doorgeven aan functies.

Belangrijke verschillen:

  • map == nil betekent dat de kaart niet is geïnitialiseerd en geen elementen kan accepteren.
  • slice == nil betekent dat de slice leeg is en niet naar een array wijst, maar kan worden gebruikt voor lezen (zal leeg zijn) en doorgeven.

Voorbeeld:

var m map[string]int // m == nil
// m["key"] = 1 // panic: toewijzing aan entry in nil-kaart

var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // nu is de slice geïnitialiseerd

Dus, nil-kaart is niet geschikt voor schrijven, en nil-slice is veilig voor lezen en uitbreiden.