Junior — Middle
Wat gebeurt er bij het aanroepen van de append-methode en waarom geeft deze een nieuwe slice terug?
sobes.tech AI
Antwoord van AI
In Go wordt de methode append gebruikt om elementen toe te voegen aan een slice. Wanneer append wordt aangeroepen, gebeurt het volgende:
- Als de capaciteit (capacity) van de slice voldoende is, wordt het nieuwe element eenvoudigweg toegevoegd aan de bestaande array, en wordt een slice geretourneerd die wijst naar het bijgewerkte deel van de array.
- Als de capaciteit niet voldoende is, wordt een nieuwe array met een vergrote capaciteit gemaakt, worden de oude elementen gekopieerd, en wordt het nieuwe element toegevoegd.
Daarom retourneert append een nieuwe slice omdat:
- In het geval van capaciteitsuitbreiding, een slice wordt geretourneerd die wijst naar de nieuwe array.
- Als de capaciteit voldoende is, wordt een slice geretourneerd die naar dezelfde array wijst, maar met een verhoogde lengte.
Het is altijd belangrijk om het resultaat van append opnieuw aan de variabele toe te wijzen, zodat je de verwijzing naar de bijgewerkte slice niet verliest:
s := []int{1, 2, 3}
s = append(s, 4) // s wijst nu naar een slice met de elementen [1 2 3 4]
Op deze manier retourneert append een nieuwe slice omdat het intern de basisarray kan wijzigen, en het is nodig om de verwijzing daarop bij te werken.