Oui, les fonctions anonymes dans Go peuvent être utilisées pour définir rapidement des fonctions ponctuelles ou des fonctions qui sont exécutées immédiatement, tandis que les fermetures sont utilisées pour bloquer les variables locales dans la fonction anonyme afin que ces variables soient accessibles même si cette dernière revient.
Les fonctions anonymes sont des fonctions qui sont définies directement sans définir de nom de fonction. Ils sont souvent utilisés pour définir des fonctions ponctuelles ou des fonctions qui doivent être exécutées immédiatement. Syntaxe :
func() { // 函数体 }
La fermeture est une technique qui "bloque" les variables locales dans une fonction anonyme afin que les variables locales soient accessibles même après le retour de la fonction anonyme. Ceci peut être réalisé en utilisant une fonction anonyme comme valeur de retour d'une autre fonction ou méthode. Syntaxe :
func makeCounter() func() int { count := 0 return func() int { count++ return count } }
Le code suivant utilise des fonctions anonymes et des fermetures pour générer une fonction qui génère des nombres aléatoires :
package main import ( "fmt" "math/rand" "time" ) func main() { // 创建一个匿名函数,生成一个随机数 randomFunc := func() int { rand.Seed(time.Now().UnixNano()) return rand.Intn(100) } // 将匿名函数包装在一个闭包中,封锁随机数生成器 getRand := func(r func() int) func() int { return func() int { return r() } }(randomFunc) // 生成 10 个随机数并打印 for i := 0; i < 10; i++ { fmt.Println(getRand()) } }
Sortie :
32 78 15 64 12 99 17 42 5 37
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!