Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Länge vs. Kapazität | Arrays und Slices
Einführung in Golang

bookLänge vs. Kapazität

Die Länge eines Arrays oder Slices kann mit der Funktion len ermittelt werden:

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

Die Kapazität eines Arrays oder eines Slices kann mit der Funktion cap ermittelt werden:

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

Die Länge und die Kapazität eines Arrays sind immer identisch. Bei einem Slice hingegen kann die Kapazität von der Länge abweichen. Beispielsweise ist bei einem Slice, das aus einem Array erstellt wurde, die Kapazität größer als die Länge:

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

Die Kapazität eines Slices ist die Anzahl der Elemente vom startingIndex des Slices bis zum Ende des ursprünglichen Arrays, aus dem es erstellt wurde. Im obigen Beispiel beträgt sie 6.

Beachten Sie, dass eine Änderung an einem Slice auch das ursprüngliche Array verändert. Daher wird im gegebenen Beispiel durch das Anhängen eines Elements (oder Werts) an ein Slice im Wesentlichen das Element neben dem Endindex des Slices im ursprünglichen Array aktualisiert. Anders ausgedrückt: Die Größe des Slices wird erhöht und die Elemente des ursprünglichen Arrays werden basierend auf den angehängten Elementen/Werten aktualisiert. Dies wird mit einem Beispiel deutlicher:

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]

Die Kapazität ist nützlich, um zu bestimmen, wie viele Elemente wir an das Slice anhängen können. Wenn wir die Kapazität des Slices überschreiten, erstellt und gibt die Funktion append ein neues Slice zurück, das nicht mehr mit einem Teil des ursprünglichen Arrays verbunden ist. Es wird somit vom ursprünglichen Array getrennt.

Im folgenden Beispiel sehen Sie: Das ursprüngliche Array bleibt unverändert, obwohl wir weitere Elemente an dessen Slice angehängt haben:

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]

Dies geschah, weil das Slice eine Kapazität von 3 hatte, die überschritten wurde. Infolgedessen gab die Funktion append ein neues Slice zurück, das nicht mehr auf das ursprüngliche Array verweist.

question mark

Was ist die korrekte Syntax, um ein Element z an ein Slice namens alphabets anzuhängen?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 1.96

bookLänge vs. Kapazität

Swipe um das Menü anzuzeigen

Die Länge eines Arrays oder Slices kann mit der Funktion len ermittelt werden:

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

Die Kapazität eines Arrays oder eines Slices kann mit der Funktion cap ermittelt werden:

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

Die Länge und die Kapazität eines Arrays sind immer identisch. Bei einem Slice hingegen kann die Kapazität von der Länge abweichen. Beispielsweise ist bei einem Slice, das aus einem Array erstellt wurde, die Kapazität größer als die Länge:

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

Die Kapazität eines Slices ist die Anzahl der Elemente vom startingIndex des Slices bis zum Ende des ursprünglichen Arrays, aus dem es erstellt wurde. Im obigen Beispiel beträgt sie 6.

Beachten Sie, dass eine Änderung an einem Slice auch das ursprüngliche Array verändert. Daher wird im gegebenen Beispiel durch das Anhängen eines Elements (oder Werts) an ein Slice im Wesentlichen das Element neben dem Endindex des Slices im ursprünglichen Array aktualisiert. Anders ausgedrückt: Die Größe des Slices wird erhöht und die Elemente des ursprünglichen Arrays werden basierend auf den angehängten Elementen/Werten aktualisiert. Dies wird mit einem Beispiel deutlicher:

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]

Die Kapazität ist nützlich, um zu bestimmen, wie viele Elemente wir an das Slice anhängen können. Wenn wir die Kapazität des Slices überschreiten, erstellt und gibt die Funktion append ein neues Slice zurück, das nicht mehr mit einem Teil des ursprünglichen Arrays verbunden ist. Es wird somit vom ursprünglichen Array getrennt.

Im folgenden Beispiel sehen Sie: Das ursprüngliche Array bleibt unverändert, obwohl wir weitere Elemente an dessen Slice angehängt haben:

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]

Dies geschah, weil das Slice eine Kapazität von 3 hatte, die überschritten wurde. Infolgedessen gab die Funktion append ein neues Slice zurück, das nicht mehr auf das ursprüngliche Array verweist.

question mark

Was ist die korrekte Syntax, um ein Element z an ein Slice namens alphabets anzuhängen?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 4
some-alt