Maison >développement back-end >Golang >Go peut-il transmettre des fonctions en tant que paramètres comme Java, et comment ?

Go peut-il transmettre des fonctions en tant que paramètres comme Java, et comment ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-09 09:47:06226parcourir

Can Go Pass Functions as Parameters Like Java, and How?

Fonctions en tant que paramètres dans Go

En Java, il est possible de passer des fonctions en paramètres, même si cela peut impliquer une certaine complexité dans la mise en œuvre classes internes anonymes. Mais Go propose-t-il un mécanisme similaire pour simplifier ce processus ?

Types de fonctions de Go

Oui, Go prend en charge la transmission de fonctions en tant que paramètres à l'aide de types de fonctions. Les types de fonctions définissent la signature d'une fonction, en spécifiant les types de ses paramètres et ses valeurs de retour. Par exemple, nous pouvons définir une conversion de type de fonction qui prend un argument entier et renvoie une chaîne :

type convert func(int) string

Implémentation des types de fonctions

Nous pouvons implémenter une fonction concrète qui satisfait le type de fonction de conversion :

func value(x int) string {
    return fmt.Sprintf("%v", x)
}

Passer les fonctions en tant que Paramètres

Avec le type de fonction défini et implémenté, nous pouvons transmettre des fonctions en tant que paramètres à d'autres fonctions. Par exemple, la fonction suivante quote123 prend une fonction de type convert et l'applique au nombre 123 :

func quote123(fn convert) string {
    return fmt.Sprintf("%q", fn(123))
}

Exemples

Dans l'exemple de code fourni, nous montrer comment utiliser le type de fonction convert et transmettre des fonctions comme paramètres :

  • Nous créons une valeur de fonction qui implémente le type de conversion et renvoie la représentation sous forme de chaîne d'un entier.
  • Nous appelons quote123 avec à la fois une valeur et une fonction anonyme pour convertir 123 en chaîne et afficher le résultat cité.
  • Nous définissons également une fonction foo qui renvoie la chaîne "foo" et la passons en paramètre à quote123.
  • Enfin, nous vérifions que le type de foo satisfait le type de conversion à runtime utilisant convert(foo).

Cela démontre la flexibilité et l'expressivité des types de fonctions de Go, permettant la création de code composable et réutilisable.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn