Maison > Article > développement back-end > fonction golang passage de paramètres de fonction imbriquée
Les fonctions Go peuvent être imbriquées et les fonctions intégrées peuvent accéder aux variables de fonction externes. Les méthodes de transmission de paramètres incluent : la transmission par valeur (copie de la valeur) et la transmission par référence (transmission de l'adresse). Les fonctions imbriquées et le passage de paramètres sont utilisés dans des applications pratiques, telles que le calcul de la moyenne d'un tableau et la modification de variables externes par passage par référence pour obtenir un traitement de données flexible.
Passage du paramètre de fonction imbriquée de la fonction Go
Les fonctions dans Go peuvent être imbriquées, ce qui signifie qu'une fonction peut être définie à l'intérieur d'une autre fonction. Les fonctions imbriquées peuvent accéder aux variables des fonctions externes, mais pas l'inverse.
Syntaxe
La syntaxe d'une fonction imbriquée est la suivante :
func outerFunction(args ...) { func innerFunction(args ...) { // 访问外部函数的变量 } }
Passage de paramètres
Lorsqu'une fonction imbriquée est appelée, ses paramètres peuvent être transmis à la fonction externe. Les paramètres peuvent être transmis des manières suivantes :
Exemple de passage par valeur :
func outerFunction(x int) { func innerFunction(y int) { fmt.Println(x + y) // 输出 x + y } innerFunction(10) } func main() { outerFunction(5) // 输出 15 }
Exemple de passage par référence :
func outerFunction(x *int) { func innerFunction(y *int) { *y += *x // 更改外部函数的变量 x } innerFunction(x) } func main() { x := 5 outerFunction(&x) fmt.Println(x) // 输出 10 }
Un cas pratique
Ce qui suit est un cas pratique d'utilisation de fonctions imbriquées et de passage par référence :
func calculateAverage(data []int) { sum := 0 // 内嵌函数用于计算数组中的每个元素的总和 func sumArray(data []int) { for _, v := range data { sum += v } } sumArray(data) return float64(sum) / float64(len(data)) } func main() { data := []int{1, 2, 3, 4, 5} fmt.Println(calculateAverage(data)) // 输出 3.0 }
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!