In der Welt von Go sind Slices eine grundlegende Datenstruktur. Allerdings können ihre Kapazität und Länge für Anfänger manchmal verwirrend sein. Lassen Sie uns anhand eines praktischen Beispiels tiefer in die Konzepte eintauchen.
func main() { a := make([]int, 5) // [0,0,0,0,0] len=5 cap=5 b := make([]int, 0, 5) // [] len=0 cap=5 c := b[:2] // [0,0] len=2 cap=5 d := c[2:5] // [0,0,0] len=3 cap=3 }
Grundlegendes zur Slice-Initialisierung
Sowohl a als auch b werden mit make initialisiert, jedoch mit unterschiedlichen Parametern. a initialisiert ein Array von Ganzzahlen mit einer Länge von 5 und einer Kapazität von 5, während b ein leeres Array mit einer Kapazität von 5 initialisiert.
Nullwerte und Array-Initialisierung
Gos Konzept nicht initialisierter Variablen ist hier wichtig. Wenn Sie eine Variable erstellen, ohne ihren Wert explizit festzulegen, wird sie mit ihrem Nullwert initialisiert. Für ein Integer-Array bedeutet dies ein Array, das nur Nullen enthält.
Slicing und Nullwerte
Wenn Sie b mit [:2] segmentieren, erstellen Sie ein neues Slice C. Dieses Slice zeigt auf dasselbe Hintergrundarray wie b, jedoch nur auf die ersten beiden Elemente. Da das Hintergrundarray mit Nullen initialisiert wurde, enthält c die Elemente [0,0].
Slicing und Kapazität
Wenn Sie schließlich c mit [2 :5], Sie erstellen ein neues Slice d. Dieses Slice nutzt das gleiche Backing-Array wie c, jedoch mit unterschiedlichen Indizes. Die Kapazität von d beträgt 5-2 = 3, da es die verbleibenden Elemente im Hintergrundarray nach dem Slicing darstellt.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Länge und Kapazität bei Go-Slices?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!