Junior — Middle
Is het mogelijk dat de variabele len een kleinere lengte aangeeft dan de werkelijke grootte van de array of slice?
sobes.tech AI
Antwoord van AI
In Go weerspiegelt de variabele len voor een array of slice altijd de huidige lengte, die wordt geretourneerd door de ingebouwde functie len().
- Voor een array is
lenaltijd gelijk aan de grootte van de array en verandert niet. - Voor een slice toont
lenhet aantal elementen in de slice, dat kleiner of gelijk kan zijn aan de capaciteit van de slice.
De situatie waarin len kleiner is dan de werkelijke grootte van de array is onmogelijk, omdat len voor een array vaststaat en gelijk is aan de grootte.
Voor een slice kan de lengte kleiner zijn dan de capaciteit, maar niet groter dan het daadwerkelijke aantal elementen dat via de index toegankelijk is.
Voorbeeld:
arr := [5]int{1,2,3,4,5}
fmt.Println(len(arr)) // 5
slice := arr[1:3]
fmt.Println(len(slice)) // 2
fmt.Println(cap(slice)) // 4
Hier is de lengte van de slice 2, terwijl de capaciteit 4 is. Maar de lengte kan niet groter zijn dan de werkelijke grootte van de slice.