Wat is capaciteit in slices en hoe wordt het gebruikt?
sobes.tech AI
Antwoord van AI
In Go is een slice een structuur die een pointer naar een array bevat, een lengte (len) en een capaciteit (cap). De capaciteit is het maximale aantal elementen dat de slice kan bevatten zonder extra geheugen toe te wijzen.
Wanneer een slice wordt gemaakt, is de lengte het aantal elementen dat het bevat, en de capaciteit is de grootte van de basiselementenarray, beginnend vanaf de positie van het eerste element van de slice.
Als bij het toevoegen van elementen met append de lengte van de slice de capaciteit overschrijdt, wordt een nieuwe array met een grotere capaciteit toegewezen en worden de gegevens daarin gekopieerd.
Voorbeeld:
s := make([]int, 2, 5) // lengte 2, capaciteit 5
fmt.Println(len(s)) // 2
fmt.Println(cap(s)) // 5
s = append(s, 1, 2, 3) // nu lengte 5, capaciteit 5
s = append(s, 4) // lengte 6, capaciteit verhoogd (bijvoorbeeld 10)
Capaciteit helpt bij het efficiënt beheren van geheugen, waardoor het aantal allocaties bij het groeien van de slice wordt verminderd.