Go - fermeture de fonction

Le langage de programmation Go prend en charge les fonctions anonymes qui peuvent agir comme des fermetures de fonction. Les fonctions anonymes sont utilisées lorsque nous voulons définir une fonction en ligne sans lui passer de nom.

Dans notre exemple, nous avons créé une fonction getSequence () qui renvoie une autre fonction. Le but de cette fonction est de fermer sur une variable i de fonction supérieure pour former une fermeture. Par exemple -

package main

import "fmt"

func getSequence() func() int {
   i:=0
   return func() int {
      i+=1
      return i  
   }
}

func main(){
   /* nextNumber is now a function with i as 0 */
   nextNumber := getSequence()  

   /* invoke nextNumber to increase i by 1 and return the same */
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   
   /* create a new sequence and see the result, i is 0 again*/
   nextNumber1 := getSequence()  
   fmt.Println(nextNumber1())
   fmt.Println(nextNumber1())
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

1
2
3
1
2