Ändern des Werts eines einfachen Typs durch einen Zeigerempfänger in Go
Das Ändern des Werts eines einfachen Typs durch eine Zeigerempfängermethode kann eine sein gemeinsame Aufgabe in Go. Allerdings ist es wichtig zu verstehen, wie sich Zeiger in diesem Kontext verhalten.
Im bereitgestellten Beispiel:
<br>type FooInt int</p> <p>func (fi *FooInt ) FromString(i string) {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">num, _ := strconv.Atoi(i) tmp := FooInt(num) fi = &tmp
}
Wenn ein Zeiger als Empfänger übergeben wird, wird innerhalb der Methode eine Kopie dieses Zeigers erstellt . Alle an der Kopie innerhalb der Methode vorgenommenen Änderungen wirken sich nicht auf den ursprünglichen Zeiger aus.
Im Codeausschnitt ist *fi eine Kopie des fi-Zeigers, der an die FromString-Methode übergeben wird. Wenn Sie *fi &tmp zuweisen, ändern Sie im Wesentlichen den Wert der Kopie, nicht den ursprünglichen fi-Zeiger.
Um den Wert des ursprünglichen Zeigers zu ändern, müssen Sie Folgendes tun:
Gibt den neuen Zeigerwert zurück:
<br> func (fi <em>FooInt) FromString(i string) </em>FooInt {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> num, _ := strconv.Atoi(i) tmp := FooInt(num) return &tmp
}
Übergeben Sie einen Nicht-Null-Zeiger auf den Wert, den Sie ändern möchten:
<br> func (fi <em>FooInt) FromString(i string, p </em>*FooInt) {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> num, _ := strconv.Atoi(i) tmp := FooInt(num) *p = &tmp
}
Stellen Sie sicher, dass der Empfänger nicht Null ist:
<br> func (fi *FooInt) FromString(i string) {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> num, _ := strconv.Atoi(i) *fi = FooInt(num)
}
Indem Sie sicherstellen, dass der Empfänger ein gültiger Zeiger ist, und den Zeigerwert innerhalb der Methode ändern, können Sie den Wert des ursprünglichen einfachen Typs effektiv über einen Zeiger ändern Empfänger.
Das obige ist der detaillierte Inhalt vonWie ändere ich den Wert eines einfachen Typs mithilfe eines Zeigerempfängers in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!