Maison >développement back-end >Golang >Comment puis-je récupérer des pointeurs de fonction à partir des noms de fonctions dans Go ?
Récupération de pointeurs de fonction à partir de noms de fonctions dans Go
De nombreux langages de programmation permettent d'accéder aux pointeurs de fonction à partir de représentations sous forme de chaîne de noms de fonctions. Cette fonctionnalité est particulièrement utile pour les techniques de métaprogrammation, telles que la sélection dynamique de fonctions à exécuter.
Solution dans Go
Contrairement à certains autres langages, Go prend en charge nativement les pointeurs de fonction en premier lieu. -valeurs de classe, éliminant le besoin de mécanismes supplémentaires pour les obtenir à partir des noms de fonctions. Au lieu de cela, les fonctions peuvent être directement transmises en tant qu'arguments à d'autres fonctions.
Par exemple, considérons le code suivant :
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)) }
Dans ce code, someOtherFunction accepte un pointeur de fonction comme argument et invoque la fonction spécifiée avec les arguments fournis.
Utilisation d'une carte pour la sélection dynamique de fonctions
Dans Dans les cas où la sélection d'une fonction dépend des informations d'exécution, vous pouvez utiliser une carte pour associer les noms de fonction aux pointeurs de fonction correspondants. Par exemple :
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
Cela vous permet de récupérer et d'exécuter dynamiquement des fonctions basées sur une clé spécifiée.
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!