Maison >développement back-end >Golang >passage du paramètre de fermeture de la fonction golang
En langage Go, les fermetures peuvent transmettre des valeurs de paramètres ou des références. Passer une valeur crée une copie de la valeur dans la fermeture, et les modifications apportées à cette copie ne sont valides que dans la fermeture et n'affectent pas le paramètre d'origine ; le passage d'une référence crée un pointeur vers le paramètre dans la fermeture et modifie le pointeur ; Mettez à jour les paramètres d'origine. Lorsqu'un paramètre est passé par valeur, la valeur du paramètre d'origine reste inchangée, tandis que lorsqu'un paramètre est passé par référence, la valeur du paramètre d'origine est modifiée.
Paramètre passant dans les fermetures de fonction Go
Introduction
En langage Go, une fermeture est une fonction dont la portée contient la portée de sa fonction de création. Cela permet à la fermeture d'accéder et de modifier les variables déclarées dans la fonction de création, même après le retour de la fonction de création.
Passage de paramètres
Lors du passage de paramètres dans une fermeture, vous devez déterminer si le paramètre transmis est une valeur ou une référence.
Exemple en action
L'exemple suivant montre comment utiliser les fermetures pour transmettre des paramètres et modifier des variables externes :
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) // 值不会改变 }
Sortie :
Value in closure: 11 Value outside closure: 10
Dans cet exemple, counter
est une fermeture, Il modifie la valeur de num
. Cependant, puisque num
est passé par valeur, les modifications apportées à num
sont limitées à la fermeture, tandis que la variable externe num
reste inchangée. 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
est passé par pointeur, ce qui rend la fermeture Modifier la valeur de la variable externe num
. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!