Maison >développement back-end >Golang >Comment puis-je récupérer des pointeurs de fonction à partir des noms de fonctions dans Go ?

Comment puis-je récupérer des pointeurs de fonction à partir des noms de fonctions dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-03 07:22:10402parcourir

How Can I Retrieve Function Pointers from Function Names in 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!

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