Maison > développement back-end > Golang > Paramètres et fermetures en Go : quand utiliser lequel ?

Paramètres et fermetures en Go : quand utiliser lequel ?

Mary-Kate Olsen
Libérer: 2024-11-11 19:17:03
original
291 Les gens l'ont consulté

Parameters vs. Closures in Go: When to Use Which?

Passer des paramètres aux fermetures de fonctions

Dans Go, le choix entre créer une fonction anonyme avec un paramètre ou une fermeture peut impacter le partage de variables et comportement de la fonction.

Paramètres vs fermetures

  • Paramètres : Transmettez une copie de la valeur à la fonction.
  • Fermetures : Référencez la variable à partir de la portée englobante.

Quand utiliser les paramètres

  • Quand la fonction a besoin un instantané de la valeur de la variable au moment de l'invocation.
  • Lorsqu'il est important d'empêcher la modification simultanée de la variable par plusieurs goroutines.

Quand utiliser les fermetures

  • Lorsque la fonction doit accéder et modifier la variable dans la portée englobante.
  • Lorsque le partage de la variable sur plusieurs invocations de la fonction est souhaité.

Exemple : fermetures et paramètres

Considérez les exemples de code suivants qui illustrent la différence entre les fermetures et les paramètres :

Fermeture :

for i := 0; i < 3; i++ {
    go func() {
        fmt.Println(i)
    }()
}
Copier après la connexion

Paramètre :

for i := 0; i < 3; i++ {
    go func(v int) {
        fmt.Println(v)
    }(i)
}
Copier après la connexion

Résultat :

  • Fermeture : Impressions la valeur de i au moment de la création de la goroutine, ce qui donne "3" pour toutes les invocations.
  • Paramètre : Imprime la valeur de i lorsque la goroutine s'exécute, ce qui donne "0", "1", "2".

Conclusion

Le choix entre les paramètres et les fermetures dépend du comportement souhaité et des exigences de partage variables. Lorsqu'une fonction a besoin d'un instantané d'une valeur, les paramètres sont préférés. Les fermetures sont utiles pour accéder et modifier des variables dans la portée englobante ou pour les partager sur plusieurs invocations.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal