Heim > Artikel > Backend-Entwicklung > Übergabe von Abschlussparametern für die Golang-Funktion
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.
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.
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) // 值不会改变 }
Ausgabe:
Value in closure: 11 Value outside closure: 10
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) // 值会改变 }
输出:
Value in closure: 11 Value outside closure: 11
在该示例中,num
是通过指针传递的,这使得闭包可以修改外部变量 num
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!