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
Barbara Streisandoriginal
2024-11-28 20:41:14781parcourir

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

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

123
99

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

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