Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Lengte Versus Capaciteit | Arrays en Slices
Introductie tot Golang

bookLengte Versus Capaciteit

We kunnen de lengte van een array of slice bepalen met de functie len:

index.go

index.go

copy
12345
randomNumbers := [] 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

index.go

copy
1234
randomNumbers := [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

index.go

copy
12345
randomNumbers := [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

index.go

copy
12345678
numbers := [] 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.

question mark

Wat is de juiste syntaxis om een element z toe te voegen aan een slice genaamd alphabets?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 4

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 1.96

bookLengte Versus Capaciteit

Veeg om het menu te tonen

We kunnen de lengte van een array of slice bepalen met de functie len:

index.go

index.go

copy
12345
randomNumbers := [] 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

index.go

copy
1234
randomNumbers := [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

index.go

copy
12345
randomNumbers := [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

index.go

copy
12345678
numbers := [] 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.

question mark

Wat is de juiste syntaxis om een element z toe te voegen aan een slice genaamd alphabets?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 4
some-alt