Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Passer des Fonctions comme Arguments | Fonctions
Introduction à Golang
course content

Contenu du cours

Introduction à Golang

Introduction à Golang

1. Commencer
2. Types de Données
3. Structures de Contrôle
4. Fonctions
5. Tableaux et Tranches
6. Introduction aux Structs et Maps

book
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 :

go

index

copy
12345678910111213141516
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 :

go

index

copy
1234567891011121314151617181920
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)) }
Quel sera le résultat du programme suivant :

Quel sera le résultat du programme suivant :

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 6
We're sorry to hear that something went wrong. What happened?
some-alt