Maison  >  Article  >  développement back-end  >  fonction golang passage de paramètres de fonction imbriquée

fonction golang passage de paramètres de fonction imbriquée

WBOY
WBOYoriginal
2024-04-22 21:21:011120parcourir

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.

fonction golang passage de paramètres de fonction imbriquée

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 :

  • Passage par valeur : Les valeurs des paramètres sont copiées et transmises à la fonction imbriquée.
  • Pass par référence : L'adresse du paramètre est passée à la fonction imbriquée.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn