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
Freigeben: 2024-11-19 11:32:02
Original
494 Leute haben es durchsucht

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>
<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
Nach dem Login kopieren

}

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
    Nach dem Login kopieren

}

  • Ü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
    Nach dem Login kopieren
  • }

  • 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)
    Nach dem Login kopieren
  • }

    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!

    Quelle:php.cn
    Vorheriger Artikel:Wie verwende ich Proxys mit UTLS- und HTTP 1.1-Anfragen? Nächster Artikel:Wie gehe ich mit Typunterschieden um, wenn ich von Go aus auf MongoDB zugreife?
    Erklärung dieser Website
    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
    Neueste Artikel des Autors
    Aktuelle Ausgaben
    verwandte Themen
    Mehr>
    Beliebte Empfehlungen
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage