Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Længde vs Kapacitet | Arrays og Slices
Introduktion til Golang

bookLængde vs Kapacitet

Vi kan bestemme længden af et array eller et slice ved hjælp af funktionen 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

Vi kan bestemme kapaciteten af et array eller et slice ved at bruge cap-funktionen:

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

Længden og kapaciteten af et array er altid ens. For et slice kan kapaciteten dog være forskellig fra længden. For eksempel, når et slice oprettes ud fra et array, er kapaciteten større end længden:

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

Kapaciteten af et slice er antallet af elementer fra startingIndex for slicet til slutningen af det oprindelige array, hvorfra det blev oprettet. I eksemplet ovenfor er det 6.

Bemærk, at ændringer i et slice også ændrer det oprindelige array. Derfor vil tilføjelse af et element (eller en værdi) til et slice i det givne eksempel reelt opdatere elementet ved siden af slicets slutindeks i det oprindelige array. Med andre ord øges størrelsen af slicet, og elementerne i det oprindelige array opdateres baseret på de tilføjede elementer/værdier. Dette bliver tydeligere med et eksempel:

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]

Kapaciteten er nyttig til at bestemme, hvor mange elementer der kan tilføjes til slicet. Hvis vi overskrider kapaciteten for slicet, opretter og returnerer append-funktionen et nyt slice, som ikke er forbundet til en del af det oprindelige array. Det bliver derfor adskilt fra det oprindelige array.

Du kan se følgende eksempel: det oprindelige array forbliver uændret, selvom vi har tilføjet flere elementer til dets slice:

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]

Dette skete, fordi slicen havde en kapacitet på 3, som vi overskred. Som resultat returnerede append-funktionen en ny slice, der ikke længere refererer til det oprindelige array.

question mark

Hvad er den korrekte syntaks for at tilføje et element z til en slice kaldet alphabets?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 1.96

bookLængde vs Kapacitet

Stryg for at vise menuen

Vi kan bestemme længden af et array eller et slice ved hjælp af funktionen 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

Vi kan bestemme kapaciteten af et array eller et slice ved at bruge cap-funktionen:

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

Længden og kapaciteten af et array er altid ens. For et slice kan kapaciteten dog være forskellig fra længden. For eksempel, når et slice oprettes ud fra et array, er kapaciteten større end længden:

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

Kapaciteten af et slice er antallet af elementer fra startingIndex for slicet til slutningen af det oprindelige array, hvorfra det blev oprettet. I eksemplet ovenfor er det 6.

Bemærk, at ændringer i et slice også ændrer det oprindelige array. Derfor vil tilføjelse af et element (eller en værdi) til et slice i det givne eksempel reelt opdatere elementet ved siden af slicets slutindeks i det oprindelige array. Med andre ord øges størrelsen af slicet, og elementerne i det oprindelige array opdateres baseret på de tilføjede elementer/værdier. Dette bliver tydeligere med et eksempel:

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]

Kapaciteten er nyttig til at bestemme, hvor mange elementer der kan tilføjes til slicet. Hvis vi overskrider kapaciteten for slicet, opretter og returnerer append-funktionen et nyt slice, som ikke er forbundet til en del af det oprindelige array. Det bliver derfor adskilt fra det oprindelige array.

Du kan se følgende eksempel: det oprindelige array forbliver uændret, selvom vi har tilføjet flere elementer til dets slice:

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]

Dette skete, fordi slicen havde en kapacitet på 3, som vi overskred. Som resultat returnerede append-funktionen en ny slice, der ikke længere refererer til det oprindelige array.

question mark

Hvad er den korrekte syntaks for at tilføje et element z til en slice kaldet alphabets?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 4
some-alt