Les fonctions peuvent-elles être transmises en tant que paramètres dans Go ?
Java permet de transmettre des fonctions en tant que paramètres via l'utilisation de classes internes anonymes. Go fournit-il un mécanisme similaire pour faciliter cette fonctionnalité ?
Réponse :
Absolument ! Go prend en charge la transmission de fonctions en tant que paramètres via des fonctions et des fermetures anonymes. Voici quelques exemples :
Exemple 1 :
package main import "fmt" type convert func(int) string func value(x int) string { return fmt.Sprintf("%v", x) } func quote123(fn convert) string { return fmt.Sprintf("%q", fn(123)) } func main() { result := quote123(value) fmt.Println(result) // Output: "123" }
Dans cet exemple, le type de fonction de conversion est défini pour prendre un entier et renvoyer une chaîne. La fonction value implémente la conversion en renvoyant la représentation sous forme de chaîne de l'entier d'entrée. La fonction quote123 accepte une fonction de conversion comme argument et renvoie une représentation sous forme de chaîne entre guillemets du résultat de l'appel de la fonction avec la valeur 123.
Exemple 2 :
package main import "fmt" func main() { result := quote123(func(x int) string { return fmt.Sprintf("%b", x) }) fmt.Println(result) // Output: "1111011" }
Ici, une fonction anonyme est passée en argument à la fonction quote123. La fonction anonyme convertit l'entier d'entrée en sa représentation sous forme de chaîne binaire.
Exemple 3 :
package main import "fmt" func main() { foo := func(x int) string { return "foo" } result := quote123(foo) fmt.Println(result) // Output: "foo" }
Dans ce cas, une fonction nommée, foo, est passée comme un argument à citer123. La fonction foo renvoie simplement la chaîne "foo" pour toute entrée.
Ces exemples démontrent la flexibilité et la puissance du passage de fonctions en tant que paramètres dans Go, vous permettant de créer du code générique 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!