Contenu du cours
Introduction à Golang
Introduction à Golang
Passer des Fonctions comme Arguments
Une autre fonctionnalité utile est la capacité de passer des fonctions comme arguments à d'autres fonctions.
Pour rappel, la syntaxe fondamentale d'une fonction avec des paramètres est la suivante :
Nous utilisons la syntaxe suivante pour spécifier le type de données du paramètre lors de son passage à une fonction :
Le mot-clé func
est suivi par des types de données séparés par des virgules pour les paramètres de cette fonction entre parenthèses. De plus, nous spécifions le type de données de retour pour la fonction ou l'ensemble de fonctions attendu, le cas échéant.
Un exemple peut aider à illustrer ce concept :
index
package main import "fmt" func nTimes(n int, msg string) { for i := 0; i < n; i++ { fmt.Println(msg) } } func printFiveTimes(msg string, show func(int, string)) { show(5, "Hello World") } func main() { printFiveTimes("HelloWorld", nTimes) }
Dans l'exemple ci-dessus, nous passons une fonction nommée nTimes
comme argument à la fonction printFiveTimes
. Le type de données pour le paramètre show
dans la définition de la fonction printFiveTimes
est func(int, string)
, ce qui correspond à la définition de la fonction nTimes
, c'est-à-dire nTimes(n int, msg string)
.
Maintenant, regardons un exemple de fonction avec une valeur de retour :
index
package main import "fmt" // A factorial is the product of all the numbers from 1 up till n // For-example factorial of 5 is 1x2x3x4x5, which is 120 func factorial(n int) int { var result int = 1; for i := 2; i <= n; i++ { result *= i } return result } func eval(n int, oper func(int) int) int { return oper(n) } func main() { fmt.Println(eval(5, factorial)) }
Merci pour vos commentaires !