Maison > développement back-end > Golang > Comment appeler dynamiquement des fonctions Go à l'aide de noms de chaînes ?

Comment appeler dynamiquement des fonctions Go à l'aide de noms de chaînes ?

Barbara Streisand
Libérer: 2024-11-28 20:41:14
original
835 Les gens l'ont consulté

How to Dynamically Invoke Go Functions Using String Names?

Invocation dynamique de fonctions à l'aide de noms de chaînes dans Go

Dans Go, les fonctions occupent une position de première classe, éliminant le besoin de techniques détournées utilisées dans des langages dynamiques. Cela permet de transmettre des fonctions en tant que paramètres à d'autres fonctions, permettant ainsi des capacités de métaprogrammation.

Par exemple, supposons que vous souhaitiez transmettre une fonction en tant qu'argument à une autre fonction. Voici le code que vous pouvez utiliser pour accomplir cela :

package main

import "fmt"

func someFunction1(a, b int) int {
        return a + b
}

func someFunction2(a, b int) int {
        return a - b
}

func someOtherFunction(a, b int, f func(int, int) int) int {
        return f(a, b)
}

func main() {
        fmt.Println(someOtherFunction(111, 12, someFunction1))
        fmt.Println(someOtherFunction(111, 12, someFunction2))
}
Copier après la connexion

L'exécution de ce code produira le résultat suivant :

123
99
Copier après la connexion

De plus, si la sélection de fonction est influencée par un runtime uniquement valeur connue, une carte peut être utilisée :

m := map[string]func(int, int) int {
        "someFunction1": someFunction1,
        "someFunction2": someFunction2,
}

...

z := someOtherFunction(x, y, m[key])
Copier après la connexion

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