Maison > développement back-end > Golang > le corps du texte

Projets open source et partage de ressources pour les fonctions et fermetures anonymes de Golang

王林
Libérer: 2024-05-04 22:15:01
original
315 Les gens l'ont consulté

Fonctions et fermetures anonymes : les fonctions anonymes sont des fonctions sans nom créées à la volée pour effectuer une tâche spécifique. Les fermetures sont des variables qui permettent d'accéder à des variables externes au sein d'une fonction anonyme. En Go, ils sont déclarés en utilisant la syntaxe func(). Les fonctions et fermetures anonymes peuvent être utilisées pour transmettre des arguments, les stocker dans des variables ou, en pratique, pour trier les tranches et gérer les événements.

Projets open source et partage de ressources pour les fonctions et fermetures anonymes de Golang

Fonctions anonymes et fermetures dans Go

Introduction

Les fonctions anonymes sont des fonctions dans Go qui ne sont pas explicitement nommées et peuvent être utilisées comme expressions. Elles sont utilisées pour créer des tâches ponctuelles ou des rappels. Une fermeture est une fonction anonyme qui contient une référence à une variable externe qui persiste même après le retour de la fonction.

Fonctions anonymes

Déclarez les fonctions anonymes en utilisant la syntaxe func() :

func() {
    fmt.Println("这是一个匿名函数")
}
Copier après la connexion

Les fonctions anonymes peuvent être transmises comme arguments à d'autres fonctions ou stockées dans des variables :

func callAnon(anon func()) {
    anon()
}

var anonFunc = func() {
    fmt.Println("这是一个存储在变量中的匿名函数")
}
Copier après la connexion

Fermetures

Les fermetures permettent un accès anonyme aux fonctions Variables en externe portées. Ces variables sont appelées variables de fermeture.

var x = 10

anon := func() {
    fmt.Println(x)  // 访问闭包变量
}

anon()  // 输出:10
Copier après la connexion

Cas pratique

  • Trier les tranches : Utilisez la fermeture pour trier les tranches selon une certaine valeur de champ :
type Employee struct {
    Name string
    Age  int
}

func SortEmployeesByAge(employees []Employee) {
    sort.Slice(employees, func(i, j int) bool {
        return employees[i].Age < employees[j].Age
    })
}
Copier après la connexion
  • Gestionnaire d'événements : Créez une fonction de récepteur et spécifiez une fonction anonyme comme rappel :
type Button struct {
    onClick func()
}

func (b *Button) AddClickListener(f func()) {
    b.onClick = f
}
Copier après la connexion

Projets et ressources Open source

  • [Go wiki : Fonctions anonymes et fermetures](https://go.dev/blog/closures)
  • [Tutoriel pratique Go : Fermetures](https://go . dev/blog/closures)
  • [Fonctions anonymes et fermetures Golang](https://www.jianshu.com/p/8e78029d888a)

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal