Heim > Backend-Entwicklung > Golang > Übergabe von Abschlussparametern für die Golang-Funktion

Übergabe von Abschlussparametern für die Golang-Funktion

王林
Freigeben: 2024-04-22 16:15:01
Original
1162 Leute haben es durchsucht

In der Go-Sprache können Abschlüsse Parameterwerte oder Referenzen übergeben. Durch die Übergabe eines Werts wird eine Kopie des Werts im Abschluss erstellt. Änderungen an dieser Kopie sind nur innerhalb des Abschlusses gültig und wirken sich nicht auf den ursprünglichen Parameter aus. Durch die Übergabe eines Verweises wird ein Zeiger auf den Parameter im Abschluss erstellt und Änderungen am Zeiger vorgenommen Originalparameter aktualisieren. Wenn ein Parameter als Wert übergeben wird, bleibt der Wert des ursprünglichen Parameters unverändert, wohingegen bei der Übergabe eines Parameters als Referenz der Wert des ursprünglichen Parameters geändert wird.

Übergabe von Abschlussparametern für die Golang-Funktion

Parameterübergabe in Go-Funktionsabschlüssen

Einführung

In der Go-Sprache ist ein Abschluss eine Funktion, deren Umfang den Umfang ihrer Erstellungsfunktion enthält. Dadurch kann der Abschluss auf in der Erstellungsfunktion deklarierte Variablen zugreifen und diese ändern, auch nachdem die Erstellungsfunktion zurückgekehrt ist.

Parameterübergabe

Bei der Übergabe von Parametern in einem Abschluss müssen Sie berücksichtigen, ob der übergebene Parameter ein Wert oder eine Referenz ist.

  • Wertübergabe: Durch die Übergabe des Werts eines Parameters wird eine Kopie dieses Werts im Abschluss erstellt. Alle an dieser Kopie vorgenommenen Änderungen beschränken sich auf den Abschluss und haben keinen Einfluss auf die ursprünglichen Parameter.
  • Übergabe als Referenz: Die Übergabe eines Parameters als Referenz erstellt einen Zeiger auf diesen Parameter im Abschluss. Alle an diesem Zeiger vorgenommenen Änderungen aktualisieren den ursprünglichen Parameter.

Beispiel in Aktion

Das folgende Beispiel zeigt, wie Abschlüsse verwendet werden, um Parameter zu übergeben und externe Variablen zu ändern:

package main

import "fmt"

func main() {
    // 声明一个外层函数并传递一个值
    counter := func(num int) {
        num++ // 对参数的值进行修改
        fmt.Println("Value in closure:", num)
    }

    // 调用外层函数,传递一个值
    num := 10
    counter(num)

    fmt.Println("Value outside closure:", num) // 值不会改变
}
Nach dem Login kopieren

Ausgabe:

Value in closure: 11
Value outside closure: 10
Nach dem Login kopieren

In diesem Beispiel ist counter ein Abschluss, Es ändert den Wert von num. Da num jedoch als Wert übergeben wird, sind Änderungen an num auf den Abschluss beschränkt, während die äußere Variable num unverändert bleibt. counter 是一个闭包,它对 num 的值进行修改。但是,由于 num 是通过值传递的,对 num 的修改仅限于闭包中,而外部变量 num 保持不变。

传递引用

要通过引用传递参数,可以使用指针:

package main

import "fmt"

func main() {
    // 声明一个外层函数并传递一个引用
    counter := func(num *int) {
        *num++ // 对指针所指向的值进行修改
        fmt.Println("Value in closure:", *num)
    }

    // 调用外层函数,传递一个引用
    num := 10
    counter(&num)

    fmt.Println("Value outside closure:", num) // 值会改变
}
Nach dem Login kopieren

输出:

Value in closure: 11
Value outside closure: 11
Nach dem Login kopieren

在该示例中,num 是通过指针传递的,这使得闭包可以修改外部变量 num

🎜Übergabe per Referenz🎜🎜🎜Um Parameter per Referenz zu übergeben, können Sie Zeiger verwenden: 🎜rrreee🎜Ausgabe: 🎜rrreee🎜In diesem Beispiel wird num per Zeiger übergeben, wodurch der Abschluss geändert wird der Wert der externen Variablen num. 🎜

Das obige ist der detaillierte Inhalt vonÜbergabe von Abschlussparametern für die Golang-Funktion. 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