Junior — Middle
Was passiert mit der Länge und Kapazität des Slices, wenn man 10 Elemente hinzufügt, während er ursprünglich leer ist?
sobes.tech KI
Antwort von AI
Wenn Sie in Go ein leeres Slice haben (Länge und Kapazität sind 0), und Sie fügen 10 Elemente mit der Funktion append hinzu, dann:
- Wird die Länge des Slices 10 sein — die Anzahl der hinzugefügten Elemente.
- Wird die Kapazität des Slices automatisch erhöht, meist mit einem Puffer, um häufige Speicherneuzuordnungen zu vermeiden. Die genaue Kapazität hängt von der Implementierung ab, aber oft wird sie 16 oder mehr sein, um neue Elemente aufzunehmen und einen Puffer für zukünftige Hinzufügungen zu haben.
Beispiel:
var s []int // leeres Slice
s = append(s, make([]int, 10)...) // fügt 10 Elemente hinzu
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, meist 16 oder 20
Auf diese Weise wächst die Kapazität dynamisch, um den Speicher effizient zu verwalten, wenn das Slice wächst.