Maison >développement back-end >Golang >Analyse des similitudes et des différences entre les fonctions anonymes et les fermetures de Golang
Analyse des similitudes et des différences : les fonctions anonymes et les fermetures sont des fonctions sans nom qui peuvent être appelées immédiatement ou affectées à des variables. La différence est que les fermetures capturent les variables de portée externes et permettent aux fonctions internes d'accéder et de modifier les variables externes, contrairement aux fonctions anonymes.
Analyse des similitudes et des différences entre les fonctions anonymes et les fermetures en langage Go
Fonctions anonymes
Les fonctions anonymes sont des fonctions qui ne contiennent pas de noms. Ils commencent généralement par le mot-clé func
, suivi de la liste d'arguments et du corps de la fonction. Les fonctions anonymes peuvent être appelées immédiatement, affectées à des variables ou transmises à d'autres fonctions.
Exemple de code :
// 匿名函数 func() { fmt.Println("匿名函数") }
Fermetures
Les fermetures sont des fonctions anonymes qui capturent des variables dans la portée environnante. Cela permet à la fonction interne d'accéder et de modifier les variables dans sa portée externe, même après le retour de la fonction externe. Les fermetures sont souvent utilisées pour créer des fonctions avec des données d'état ou partagées.
Exemple de code :
// 闭包 func increment() func() int { var i int return func() int { i++ return i } }
Similarités et différences
Mêmes points :
Différence :
Cas pratique : Création d'un compteur à état partagé
A l'aide des fermetures, on peut créer un compteur à état partagé :
// 闭包计数器 func makeCounter() func() int { var count int return func() int { count++ return count } } func main() { counter := makeCounter() for i := 0; i < 5; i++ { fmt.Println(counter()) } }
Sortie :
1 2 3 4 5
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!