Junior — Middle
Wat gebeurt er met de lengte en capaciteit van de slice als je er 10 elementen aan toevoegt, terwijl deze aanvankelijk leeg is?
sobes.tech AI
Antwoord van AI
Als je een lege slice in Go hebt (lengte en capaciteit gelijk aan 0), en je voegt er 10 elementen aan toe met de functie append, dan:
- Wordt de lengte van de slice 10 — het aantal toegevoegde elementen.
- Wordt de capaciteit van de slice automatisch verhoogd, meestal met een marge, om frequente geheugenherallocaties te voorkomen. De exacte capaciteit hangt af van de implementatie, maar zal vaak 16 of meer zijn, om nieuwe elementen te kunnen bevatten en ruimte te bieden voor toekomstige toevoegingen.
Voorbeeld:
var s []int // lege slice
s = append(s, make([]int, 10)...) // voeg 10 elementen toe
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, meestal 16 of 20
Op deze manier groeit de capaciteit dynamisch, zodat het geheugen efficiënt wordt beheerd naarmate de slice groter wordt.