Das Geheimnis der Referenz- und Wertübergabe in Go-Funktionen enthüllen
In Go mag das Konzept der Referenz- und Wertübergabe verwirrend erscheinen anfänglich. Zur Verdeutlichung: Go nutzt Pass-by-Value in all seiner Pracht, auch wenn es um Zeiger geht. Wenn Sie einen Zeiger auf eine Funktion übergeben, übergeben Sie im Wesentlichen deren Wert, nicht das referenzierte Objekt.
Der Zweck des Sternchens (*) in Funktionsargumenten
Wann Sie ein Sternchen (*) vor einem Typ in einem Funktionsargument wie func PutTasks(db *sql.DB) sehen, bedeutet dies, dass das Argument vom Typ „Zeiger auf“ ist sql.DB“, im Gegensatz zum Typ „sql.DB“. Diese Unterscheidung ist von entscheidender Bedeutung, da die Funktion über diesen Zeiger auf das referenzierte Objekt einwirkt.
Der Vorteil der Übergabe von Zeigern
Die Übergabe von Zeigern bietet einen Mechanismus zum Teilen von Werten zwischen den aufrufende Funktion und aufgerufene Funktion. Alle Änderungen am referenzierten Objekt innerhalb der aufgerufenen Funktion sind für den Aufrufer sichtbar. Dies ist im Wesentlichen das, was die Objektübergabe von Java standardmäßig erreicht, während Go die explizite Verwendung von Zeigern für eine solche Freigabe erfordert.
Angenommen, Sie haben eine Setter-Funktion, die die Eigenschaft eines Objekts ändern muss . In Java wäre dies unkompliziert, aber in Go würde die Funktion ohne Zeiger lediglich eine Kopie des Objekts erhalten und vorgenommene Änderungen würden nicht im Original widergespiegelt. Indem Sie einen Zeiger auf die Setter-Funktion übergeben, ermöglichen Sie der Funktion effektiv, das ursprüngliche Objekt zu bearbeiten, wodurch Änderungen ermöglicht werden, die über den Funktionsaufruf hinaus bestehen bleiben.
Zusätzliche Ressourcen
Um tiefer in dieses Thema einzutauchen, lesen Sie die folgenden Ressourcen:
Das obige ist der detaillierte Inhalt vonWie funktioniert der Pass-by-Value-Mechanismus von Go mit Zeigern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!