Heim >Backend-Entwicklung >Golang >Können Go-Strukturzeigermethoden Zeiger verschiedenen Instanzen neu zuweisen?
Können Zeiger in Strukturzeigermethoden anderen Instanzen neu zugewiesen werden?
Zeiger in Go verstehen
Zeiger in Go sind wie Ganzzahlen Werte, die als Speicheradressen interpretiert werden. Um eine Variable vom Typ int zu ändern, wird ein Zeiger auf diesen Zeiger (int) übergeben und dem gezeigten Objekt (*i) wird dann ein neuer Wert zugewiesen.
Ändern Zeiger in Strukturzeigermethoden
Strukturempfängermethoden können jedoch keine Zeiger auf Zeiger (*T) für den Empfängertyp sein. Stattdessen gibt es zwei Optionen:
Definieren Sie eine Nicht-Methodenfunktion, die ein **T annimmt Zeiger und ändert das gezeigte Objekt.
Gibt den geänderten Zeiger von der Methode zurück und weist den Aufrufer an, ihn der Variablen zuzuweisen, die den Baumzeiger enthält.
Adressierung von Bedenken
Das Zurückgeben des geänderten Zeigers von einer Methode ist in Go eine gängige Praxis. Beispielsweise hängt die Funktion append() sowohl Elemente an einen Slice an als auch den geänderten Slice zurück, den der Aufrufer zuweisen muss.
Beispielcode
Mit Option 1, Die Lösung für die Drehung eines Baums nach links zu seiner Wurzel wäre sein:
func rotateLeftToRoot(ptree **AvlTree) { tree := *ptree if tree == nil { return } prevLeft := tree.left if prevLeft != nil { tree.left = prevLeft.right prevLeft.right = tree tree = prevLeft } *ptree = tree }
Fazit
Während es nicht empfohlen wird, Zeiger in Strukturzeigermethoden in Go neu zuzuweisen, bieten die beiden oben beschriebenen Optionen Alternativen zum Ändern von Baumstrukturen. Das Zurückgeben des geänderten Zeigers und die Zuweisung durch den Aufrufer ist ein gängiger und effektiver Ansatz bei der Go-Programmierung.
Das obige ist der detaillierte Inhalt vonKönnen Go-Strukturzeigermethoden Zeiger verschiedenen Instanzen neu zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!