Heim >Backend-Entwicklung >Golang >Wie ändere ich den Wert eines einfachen Typs mithilfe eines Zeigerempfängers in Go?

Wie ändere ich den Wert eines einfachen Typs mithilfe eines Zeigerempfängers in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-11-19 11:32:02499Durchsuche

How to Modify a Simple Type's Value Using a Pointer Receiver in Go?

Ä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>
<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>
    <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>
    <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>
    <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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn