Dans Go, il est possible de récupérer un pointeur de fonction à partir du nom d'une fonction fourni sous forme de chaîne. Cette fonctionnalité est précieuse dans les scénarios de métaprogrammation, tels que l'appel dynamique de fonctions basées sur des paramètres de chaîne.
Contrairement à certains langages dynamiques, les fonctions Go sont des valeurs de première classe. Par conséquent, vous pouvez transmettre directement des fonctions comme arguments à d’autres fonctions. Prenons l'exemple 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)) }
Sortie :
123 99
Dans cet exemple, someOtherFunction prend deux arguments entiers et un pointeur de fonction (le paramètre f). Il appelle ensuite la fonction fournie avec les arguments donnés. Le résultat est imprimé.
Si la sélection de la fonction dépend d'une valeur connue uniquement au moment de l'exécution, vous pouvez utiliser une map :
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!