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
course content

Kursinhalt

Einführung in Golang

Einführung in Golang

1. Erste Schritte
2. Datentypen
3. Kontrollstrukturen
4. Funktionen
5. Arrays und Slices
6. Einführung in Strukturen & Maps

book
Länge vs. Kapazität

Wir können die Länge eines Arrays oder eines Slices mit der len-Funktion bestimmen:

go

index

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

Wir können die Kapazität eines Arrays oder eines Slices mit der cap Funktion bestimmen:

Die Länge und Kapazität eines Arrays sind immer gleich. Bei einem Slice kann die Kapazität jedoch von der Länge abweichen. Zum Beispiel, wenn ein Slice aus einem Array erstellt wird, ist die Kapazität größer als die Länge:

go

index

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 Slice ist die Anzahl der Elemente vom startingIndex des Slice bis zum Ende des ursprünglichen Arrays, aus dem es erstellt wurde. Im obigen Beispiel beträgt sie 6.

Denken Sie daran, dass das Ändern eines Slice auch das ursprüngliche Array verändert. Daher wird im gegebenen Beispiel durch das Anhängen eines Elements (oder Wertes) an ein Slice im Wesentlichen das Element neben dem Endindex des Slice im ursprünglichen Array aktualisiert. Mit anderen Worten, es erhöht die Größe des Slice und aktualisiert die Elemente des ursprünglichen Arrays basierend auf den angehängten Elementen/Werten. Dies wird mit einem Beispiel deutlicher:

go

index

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 dem Slice hinzufügen können. Wenn wir die Kapazität des Slice überschreiten, erstellt und gibt die append-Funktion ein neues Slice zurück, das nicht mehr mit einem Teil des ursprünglichen Arrays verbunden ist. Daher wird es vom ursprünglichen Array getrennt.

Sie können das folgende Beispiel sehen: Das ursprüngliche Array bleibt unverändert, obwohl wir mehr Elemente zu seinem Slice hinzugefügt haben:

go

index

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 wir überschritten haben. Infolgedessen gab die append-Funktion ein neues Slice zurück, das nicht mehr auf das ursprüngliche Array verweist.

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

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

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 4
We're sorry to hear that something went wrong. What happened?
some-alt