Go kann den Bereich nicht über den Zeiger auf ein Slice verschieben
In Go kommt es häufig vor, dass der Fehler „Bereich kann nicht über den Zeiger auf ein Slice reichen“ auftritt. beim Versuch, über einen Slice-Zeiger zu iterieren. Dieser Fehler ist auf die irrtümliche Annahme zurückzuführen, dass der Zeiger während der Iteration automatisch dereferenziert wird.
Leider dereferenziert Go Zeiger-auf-Slice-Typen nicht implizit. Der Grund dafür ist, dass Slices selbst als Zeiger auf Arrays fungieren. Durch die Übergabe eines Slice an eine Funktion erhält die Funktion bereits Zugriff auf die zugrunde liegenden Daten, sodass kein zusätzlicher Zeiger erforderlich ist.
Wie im Buch „Effective Go“ erläutert: „Wenn eine Funktion ein Slice-Argument annimmt, ändert sich dies.“ Dadurch werden die Elemente des Slice für den Aufrufer sichtbar, analog zur Übergabe eines Zeigers auf das zugrunde liegende Array.“
Intern wird ein Slice zusammengestellt von:
Diese kompakte Struktur macht den Zeiger überflüssig, was dazu führt, dass der Bereich über einen Zeiger auf ein Slice nicht möglich ist.
Das obige ist der detaillierte Inhalt vonWarum kann ich in Go keinen Bereich über einen Zeiger auf ein Slice legen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!