Question : Que sont les fonctions anonymes et les fermetures en langage Go ? Réponse : Fonction anonyme : Une fonction qui ne nécessite pas de déclaration explicite de nom. Fermeture : une fonction définie dans une autre fonction peut référencer des variables dans le cadre de sa fonction externe et existe toujours lorsque la fermeture est appelée.
Les fonctions anonymes sont des fonctions qui ne nécessitent pas de déclaration explicite d'un nom. Utilisez le mot-clé func
, suivi du corps de la fonction, comme ceci :
func() { fmt.Println("这是一个匿名函数") }
Une fermeture est une fonction définie à l'intérieur d'une autre fonction qui peut référencer des variables dans sa portée de fonction externe qui sont appelées dans la fermeture qui existe toujours. Cela permet à la fermeture d'accéder aux données de la portée externe après l'exécution.
func outer() func() { x := 10 return func() { fmt.Println("x 为", x) } }
Fonctions anonymes comme rappels
Les fonctions anonymes sont généralement utilisées comme rappels à exécuter lorsqu'une opération asynchrone est terminée. Par exemple :
func main() { // 使用匿名函数作为回调 httpClient.Get("https://golang.org", func(resp *http.Response, err error) { if err != nil { fmt.Println("请求失败") return } defer resp.Body.Close() io.Copy(os.Stdout, resp.Body) }) }
Les fermetures sont utilisées pour l'encapsulation des données
Les fermetures peuvent être utilisées pour encapsuler des données et des fonctions, permettant l'accès et la modification de ces données sans avoir besoin d'autres fonctions externes. Par exemple :
func main() { // 使用闭包封装共享状态 counter := func() int { var i int return func() int { i++ return i } }() fmt.Println(counter()) // 1 fmt.Println(counter()) // 2 fmt.Println(counter()) // 3 }
Conclusion :
Les fonctions et fermetures anonymes fournissent des outils puissants dans le langage Go pour écrire du code flexible et maintenable. En comprenant leur objectif et leur fonctionnement, vous pouvez tirer pleinement parti de leurs capacités.
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!