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
Libérer: 2024-12-03 07:22:10
original
423 Les gens l'ont consulté

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))
}
Copier après la connexion

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])
Copier après la connexion

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!

source:php.cn
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