Heim > Backend-Entwicklung > Golang > Ähnlichkeiten und Unterschiede zwischen Pass-by-Value und Pass-by-Reference in Golang

Ähnlichkeiten und Unterschiede zwischen Pass-by-Value und Pass-by-Reference in Golang

WBOY
Freigeben: 2024-04-12 11:03:01
Original
864 Leute haben es durchsucht

Es gibt zwei Möglichkeiten, Variablen in der Go-Sprache zu übergeben: Wertübergabe: Eine Kopie der Variablen wird übergeben und die Originalvariable wird nicht beeinflusst. Als Referenz übergeben: Übergeben Sie die Adresse der Variablen, und die Funktion kann auf die ursprüngliche Variable zugreifen und diese ändern.

Ähnlichkeiten und Unterschiede zwischen Pass-by-Value und Pass-by-Reference in Golang

Ähnlichkeiten und Unterschiede zwischen der Wertübergabe und der Referenzübergabe in der Go-Sprache

In der Go-Sprache gibt es zwei Möglichkeiten, Variablen zu übergeben: Wertübergabe und Referenzübergabe. Es ist wichtig, den Unterschied zwischen den beiden zu verstehen, da er Ihr Verhalten beim Schreiben von Code beeinflusst.

Wertübergabe

Wenn eine Variable als Wert übergeben wird, wird eine Kopie der Variablen an die Funktion oder Methode übergeben. Dies bedeutet, dass die ursprüngliche Variable von Änderungen in der Funktion nicht betroffen ist.

func changeValue(x int) {
    x = 100
}

func main() {
    a := 5
    changeValue(a)
    fmt.Println(a) // 输出 5,因为原始值没有改变
}
Nach dem Login kopieren

Im obigen Beispiel verwendet die Funktion changeValue einen int mit dem Wert 5 als Parameter. Wenn an diesem Parameter eine Änderung vorgenommen wird, wird nur die Kopie geändert, nicht die ursprüngliche Variable. changeValue 函数将一个值为 5 的 int 作为参数。当对该参数进行修改时,它只会修改副本,而不会修改原始变量。

引用传递

当以引用方式传递变量时,变量的地址被传递给函数或方法。这意味着函数可以访问并修改原始变量。

使用指针来实现引用传递。指针变量存储变量的地址。如下所示:

func changeReference(x *int) {
    *x = 100
}

func main() {
    a := 5
    changeReference(&a)
    fmt.Println(a) // 输出 100,因为原始值被修改
}
Nach dem Login kopieren

在这个示例中,changeReference 函数接受一个指向整数的指针作为参数。当函数对 *x 进行修改时,它实际上是对指向 a 变量的地址进行修改,从而修改了 a

Übergabe als Referenz

Wenn eine Variable als Referenz übergeben wird, wird die Adresse der Variablen an die Funktion oder Methode übergeben. Dies bedeutet, dass die Funktion auf die ursprüngliche Variable zugreifen und diese ändern kann.
  • Verwenden Sie Zeiger, um als Referenz zu übergeben. Zeigervariablen speichern die Adresse einer Variablen. Wie unten gezeigt: rrreeeIn diesem Beispiel akzeptiert die Funktion changeReference einen Zeiger auf eine Ganzzahl als Parameter. Wenn eine Funktion *x ändert, ändert sie tatsächlich die Adresse, die auf die Variable a zeigt, und ändert dadurch den ursprünglichen Wert von a .
  • Zusammenfassung
🎜🎜 Wertübergabe 🎜: Übergeben Sie eine Kopie der Variablen. Die ursprüngliche Variable wird von den in der Funktion vorgenommenen Änderungen nicht beeinflusst. 🎜🎜🎜Übergabe als Referenz🎜: Übergeben Sie die Adresse der Variablen, und die Funktion kann auf die ursprüngliche Variable zugreifen und diese ändern. 🎜🎜

Das obige ist der detaillierte Inhalt vonÄhnlichkeiten und Unterschiede zwischen Pass-by-Value und Pass-by-Reference in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage