Lengte Versus Capaciteit
We kunnen de lengte van een array of slice bepalen met de functie len:
index.go
12345randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 } fmt.Println(len(randomNumbers)) // Output: 7 numbersSlice := randomNumbers[2:7] fmt.Println(len(numbersSlice)) // Output: 5
We kunnen de capaciteit van een array of slice bepalen met de functie cap:
randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 }
fmt.Println(cap(randomNumbers)) // Output: 7
numbersSlice := randomNumbers[2:7]
fmt.Println(cap(numbersSlice)) // Output: 5
De lengte en capaciteit van een array zijn altijd gelijk. Voor een slice kan de capaciteit echter verschillen van de lengte. Bijvoorbeeld, wanneer een slice wordt gemaakt van een array, is de capaciteit groter dan de lengte:
index.go
1234randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(len(numbersSlice)) // Output: 2 fmt.Println(cap(numbersSlice)) // Output: 6
De capaciteit van een slice is het aantal elementen vanaf de startingIndex van de slice tot het einde van de oorspronkelijke array waarvan deze is gemaakt. In het bovenstaande voorbeeld is dit 6.
Houd er rekening mee dat het wijzigen van een slice ook de oorspronkelijke array wijzigt. In het gegeven voorbeeld betekent het toevoegen van een element (of waarde) aan een slice in feite dat het element naast de eindindex van de slice in de oorspronkelijke array wordt bijgewerkt. Met andere woorden, het vergroot de grootte van de slice en werkt de elementen van de oorspronkelijke array bij op basis van de toegevoegde elementen/waarden. Dit wordt duidelijker met een voorbeeld:
index.go
12345randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(randomNumbers) // Output: [1 4 5 7 9 10 12] numbersSlice = append(numbersSlice, 20, 30, 40) fmt.Println(randomNumbers) // Output: [1 4 5 20 30 40 12]
De capaciteit is nuttig om te bepalen hoeveel elementen we aan de slice kunnen toevoegen. Als we de capaciteit van de slice overschrijden, maakt de functie append een nieuwe slice aan en retourneert deze, die niet meer verbonden is met een deel van de oorspronkelijke array. Hierdoor raakt deze losgekoppeld van de oorspronkelijke array.
Zie het volgende voorbeeld: de oorspronkelijke array blijft ongewijzigd, ook al hebben we meer elementen aan de slice toegevoegd:
index.go
12345678numbers := [] int { 1, 2, 3, 4 } numSlice := numbers[1:3] fmt.Println(numbers) // Outputs: [1 2 3 4] fmt.Println(numSlice) // Outputs: [2 3] fmt.Println(cap(numSlice)) // Outputs: 3 numSlice = append(numSlice, 9, 10) fmt.Println(numSlice) // Outputs: [2 3 9 10] fmt.Println(numbers) // Outputs: [1 2 3 4]
Dit gebeurde omdat de slice een capaciteit van 3 had, die we hebben overschreden. Hierdoor retourneerde de functie append een nieuwe slice die niet langer verwijst naar de oorspronkelijke array.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 1.96
Lengte Versus Capaciteit
Veeg om het menu te tonen
We kunnen de lengte van een array of slice bepalen met de functie len:
index.go
12345randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 } fmt.Println(len(randomNumbers)) // Output: 7 numbersSlice := randomNumbers[2:7] fmt.Println(len(numbersSlice)) // Output: 5
We kunnen de capaciteit van een array of slice bepalen met de functie cap:
randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 }
fmt.Println(cap(randomNumbers)) // Output: 7
numbersSlice := randomNumbers[2:7]
fmt.Println(cap(numbersSlice)) // Output: 5
De lengte en capaciteit van een array zijn altijd gelijk. Voor een slice kan de capaciteit echter verschillen van de lengte. Bijvoorbeeld, wanneer een slice wordt gemaakt van een array, is de capaciteit groter dan de lengte:
index.go
1234randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(len(numbersSlice)) // Output: 2 fmt.Println(cap(numbersSlice)) // Output: 6
De capaciteit van een slice is het aantal elementen vanaf de startingIndex van de slice tot het einde van de oorspronkelijke array waarvan deze is gemaakt. In het bovenstaande voorbeeld is dit 6.
Houd er rekening mee dat het wijzigen van een slice ook de oorspronkelijke array wijzigt. In het gegeven voorbeeld betekent het toevoegen van een element (of waarde) aan een slice in feite dat het element naast de eindindex van de slice in de oorspronkelijke array wordt bijgewerkt. Met andere woorden, het vergroot de grootte van de slice en werkt de elementen van de oorspronkelijke array bij op basis van de toegevoegde elementen/waarden. Dit wordt duidelijker met een voorbeeld:
index.go
12345randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(randomNumbers) // Output: [1 4 5 7 9 10 12] numbersSlice = append(numbersSlice, 20, 30, 40) fmt.Println(randomNumbers) // Output: [1 4 5 20 30 40 12]
De capaciteit is nuttig om te bepalen hoeveel elementen we aan de slice kunnen toevoegen. Als we de capaciteit van de slice overschrijden, maakt de functie append een nieuwe slice aan en retourneert deze, die niet meer verbonden is met een deel van de oorspronkelijke array. Hierdoor raakt deze losgekoppeld van de oorspronkelijke array.
Zie het volgende voorbeeld: de oorspronkelijke array blijft ongewijzigd, ook al hebben we meer elementen aan de slice toegevoegd:
index.go
12345678numbers := [] int { 1, 2, 3, 4 } numSlice := numbers[1:3] fmt.Println(numbers) // Outputs: [1 2 3 4] fmt.Println(numSlice) // Outputs: [2 3] fmt.Println(cap(numSlice)) // Outputs: 3 numSlice = append(numSlice, 9, 10) fmt.Println(numSlice) // Outputs: [2 3 9 10] fmt.Println(numbers) // Outputs: [1 2 3 4]
Dit gebeurde omdat de slice een capaciteit van 3 had, die we hebben overschreden. Hierdoor retourneerde de functie append een nieuwe slice die niet langer verwijst naar de oorspronkelijke array.
Bedankt voor je feedback!