Heim >Backend-Entwicklung >Golang >Warum verändert das Weglassen von Elementen zu Beginn eines Go-Slices dessen Kapazität?
Warum ändert sich die Kapazität eines Slice, wenn die ersten n Elemente gelöscht werden?
In Go werden Slices als Strukturen implementiert, die der folgenden ähneln:
<code class="go">type slice struct { array unsafe.Pointer len int cap int }</code>
Wenn wir die zum Drucken des Slice verwendete Funktion so ändern, dass sie den Zeiger auf das zugrunde liegende Array einschließt, erhalten wir die folgende Ausgabe:
ptr=0x450000 len=6 cap=6 [2 3 5 7 11 13] ptr=0x450000 len=4 cap=6 [2 3 5 7] ptr=0x450008 len=2 cap=4 [5 7]
Wie Sie sehen können, funktioniert das Weglassen der letzten beiden Elemente Der Zeiger wird nicht geändert, während das Löschen der ersten beiden Elemente dies tut. Dies liegt daran, dass ein Slice im Wesentlichen ein Fenster in das zugrunde liegende Array ist. Das Löschen von Elementen vom Anfang erzwingt, dass das Slice an einer neuen Position mit einem anderen Zeiger neu erstellt wird, während das Löschen von Elementen vom Ende lediglich die Länge des vorhandenen Slice anpasst.
Weitere Informationen finden Sie im Folgenden Ressourcen:
Das obige ist der detaillierte Inhalt vonWarum verändert das Weglassen von Elementen zu Beginn eines Go-Slices dessen Kapazität?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!