Junior — Middle
Wie viele Elemente und welche Kapazität hat ein Slice nach dem Hinzufügen eines Elements, wenn es ursprünglich nicht initialisiert wurde?
sobes.tech KI
Antwort von AI
Wenn ein Slice in Go ursprünglich nicht initialisiert ist (d.h., gleich nil), und Sie fügen ein Element mit der Funktion append hinzu, dann:
- Die Anzahl der Elemente (len) nach dem Hinzufügen wird 1 sein.
- Die Kapazität (cap) hängt von der Implementierung ab, beginnt aber in der Regel mit einer kleinen Kapazität, z.B. 1 oder 2.
Beispiel:
var s []int // nil-Slice
s = append(s, 10)
fmt.Println(len(s)) // 1
fmt.Println(cap(s)) // in der Regel >= 1
Daher weist Go beim Hinzufügen des ersten Elements zu einem nil-Slice automatisch Speicher für einen neuen Slice mit ausreichender Kapazität zu, um dieses Element zu speichern.