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
Susan Sarandonoriginal
2024-12-03 19:55:10654parcourir

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"
}

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!

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