Heim >Backend-Entwicklung >Golang >Warum haben die Go-Slices „c' und „d' nach dem Slicen unterschiedliche Werte und Kapazitäten?
Slice-Kapazität und -Länge in Go verstehen
Wenn man Go anhand seines Tutorials lernt, stößt man möglicherweise auf Fragen wie:
Frage:
Warum werden im Code unten die Slices c und d mit initialisiert? unterschiedliche Werte und Kapazitäten?
func main() { a := make([]int, 5) b := make([]int, 0, 5) c := b[:2] d := c[2:5] }
Antwort:
In Go werden Slices durch Arrays unterstützt. Wenn mit make ein Slice erstellt wird, wird das Hintergrundarray mit seinem Nullwert initialisiert. In diesem Fall handelt es sich um ein Array von Ganzzahlen, die jeweils auf 0 initialisiert sind.
Wenn c als Teil von b erstellt wird, verwendet es dasselbe Hintergrundarray wie b. Da b mit einem Array der Länge Null erstellt wurde, sind die ersten beiden Elemente des Hintergrundarrays 0. Daher hat c eine Länge von 2 und seine Elemente sind beide 0.
d wird als Slice von erstellt c beginnt bei Index 2. Es verwendet außerdem dasselbe Hintergrundarray wie c. Seine Kapazität ist jedoch unterschiedlich, da es sich um einen vollständigen Slice-Ausdruck handelt. Ein vollständiger Slice-Ausdruck hat eine Kapazität, die der Differenz zwischen seinem ersten und letzten Index entspricht, in diesem Fall 5 - 2 = 3.
Zusätzliche Ressourcen:
Das obige ist der detaillierte Inhalt vonWarum haben die Go-Slices „c' und „d' nach dem Slicen unterschiedliche Werte und Kapazitäten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!