Sobes.tech
Senior

Was ist die Kapazität in Slices und wie wird sie verwendet?

sobes.tech KI

Antwort von AI

In Go ist ein Slice eine Struktur, die einen Zeiger auf ein Array, eine Länge (len) und eine Kapazität (cap) enthält. Die Kapazität ist die maximale Anzahl von Elementen, die der Slice aufnehmen kann, ohne dass zusätzlicher Speicher zugewiesen wird.

Beim Erstellen eines Slices ist seine Länge die Anzahl der enthaltenen Elemente, und die Kapazität ist die Größe des Basiselements, beginnend an der Position des ersten Elements des Slices.

Wenn beim Hinzufügen von Elementen mit append die Länge des Slices die Kapazität übersteigt, wird ein neues Array mit erhöhter Kapazität zugewiesen, und die Daten werden dorthin kopiert.

Beispiel:

s := make([]int, 2, 5) // Länge 2, Kapazität 5
fmt.Println(len(s)) // 2
fmt.Println(cap(s)) // 5

s = append(s, 1, 2, 3) // jetzt Länge 5, Kapazität 5

s = append(s, 4) // Länge 6, Kapazität erhöht (z.B. 10)

Die Kapazität hilft, den Speicher effizient zu verwalten, indem die Anzahl der Allokationen beim Wachstum des Slices reduziert wird.