Maison > développement back-end > Golang > Les fonctions Go peuvent-elles être transmises en tant que paramètres ?

Les fonctions Go peuvent-elles être transmises en tant que paramètres ?

Susan Sarandon
Libérer: 2024-12-03 19:55:10
original
594 Les gens l'ont consulté

Can Go Functions Be Passed as Parameters?

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"
}
Copier après la connexion

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"
}
Copier après la connexion

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"
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal