Maison  >  Article  >  développement back-end  >  Analyse des similitudes et des différences entre les fonctions anonymes et les fermetures de Golang

Analyse des similitudes et des différences entre les fonctions anonymes et les fermetures de Golang

WBOY
WBOYoriginal
2024-05-02 11:18:021121parcourir

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 de Golang

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 :

  • Les fonctions anonymes et les fermetures sont des fonctions sans noms.
  • Ils peuvent tous être appelés ou affectés à des variables immédiatement.

Différence :

  • Les fonctions anonymes ne capturent pas les variables dans la portée externe, contrairement aux fermetures.
  • Une fermeture peut accéder et modifier des variables dans sa portée externe, tandis qu'une fonction anonyme ne peut accéder qu'aux variables dans sa propre portée.
  • Les fonctions anonymes sont généralement utilisées pour effectuer des tâches ponctuelles, tandis que les fermetures sont utilisées pour créer des fonctions avec un état ou des données partagées.

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!

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