Menu
Coddy logo textTech

Fonctions anonymes

Leçon 9 sur 19 du cours Fonctions et pointeurs en Golang de Coddy.

Ce que nous avons déjà appris, c'est comment définir une fonction avec un nom, et quand nous avons besoin de l'appeler, nous utilisons ce nom. Cependant, il existe un autre type de fonction sans nom, et nous appelons ce type une fonction anonyme.

Elle agit comme une fonction simple mais avec quelques différences dans son fonctionnement. Ces fonctions nous permettent de définir des actions directement sans avoir besoin de définir une fonction ailleurs.

Regardons un exemple de la façon de définir une fonction anonyme :

b := func(x, y int) int { return x - y }
fmt.Println(b(100, 50))

Ici, nous définissons une variable b qui stocke une fonction anonyme effectuant une soustraction. Lorsque nous appelons la fonction, nous utilisons simplement le nom de la variable b(100, 50).

Nous pouvons également recevoir une fonction anonyme comme résultat d'une autre fonction. Par exemple :

func operation(a int) func(int) int {
    if a == 1 {
        return func(a int) int { return a + 10 }
    } else {
        return func(a int) int { return a * 10 }
    }
}
func main() {
    b := operation(1)
    fmt.Println(b(14))
}

Ici, nous définissons une fonction régulière appelée operation, et le résultat (la valeur retournée) sera une fonction anonyme <strong>func(int) int</strong> au lieu d'une simple valeur.

Nous assignons la valeur de retour à une variable b. Parce que nous passons 1 comme paramètre à la fonction operation, le bloc qui sera exécuté est celui-ci :

return func(a int) int { return a + 10 }

Maintenant, lorsque nous appelons notre fonction anonyme b, nous devons passer une valeur entière, par exemple, 14.

Le résultat sera :

24

C'est le calcul de a + 10 où nous passons a qui est 14(<strong>b(14)</strong>).
 

challenge icon

Défi

Facile

Écrivez une fonction anonyme qui prend trois arguments entiers.

Si le premier argument est plus grand que le dernier , retournez la somme de tous les arguments. Sinon, retournez la multiplication du premier et du dernier argument.

Stockez le résultat de la fonction dans une variable nommée result.

Essayez vous-même

package main

import "fmt"

func main() {
    // Définissez la fonction anonyme et affectez-la à une variable nommée "result".
 
    
    
    // Affichez le résultat Ne modifiez pas ceci !
    fmt.Println("Result:", result(2, 3, 4))
    fmt.Println("Result:", result(8, 3, 4))
}

Toutes les leçons de Fonctions et pointeurs en Golang