Maison > développement back-end > Golang > le corps du texte

Comment puis-je récupérer par programme les noms de méthodes d'un type d'interface à l'aide de la réflexion dans Go ?

Susan Sarandon
Libérer: 2024-10-28 05:48:01
original
382 Les gens l'ont consulté

How can I programmatically retrieve method names from an interface type using reflection in Go?

Obtention des noms de méthodes à partir des types d'interface

Obtenir une liste de noms de méthodes pour un type d'interface via la réflexion à l'exécution est une tâche courante. Par exemple, dans un type d'interface comme :

type FooService interface {
    Foo1(x int) int
    Foo2(x string) string
}
Copier après la connexion

Vous souhaiterez peut-être récupérer dynamiquement les noms de méthodes ["Foo1", "Foo2"] en utilisant la réflexion.

Solution :

Pour y parvenir, utilisez l'extrait de code suivant :

t := reflect.TypeOf((*FooService)(nil)).Elem()
var s []string
for i := 0; i < t.NumMethod(); i++ {
    s = append(s, t.Method(i).Name)
}
Copier après la connexion

Explication :

  1. Récupérez le Type d'interface : Pour commencer, acquérez le reflet.Type du type d'interface. Ceci est accompli en obtenant d'abord le reflet.Type d'un pointeur nul vers le type d'interface à l'aide de reflet.TypeOf((*FooService)(nil)). Ensuite, utilisez la méthode Elem() pour dériver le type sous-jacent, qui est le type d'interface lui-même.
  2. Itérer sur les méthodes : Ensuite, parcourez les méthodes du type d'interface à l'aide d'une boucle. La méthode NumMethod() fournit le nombre de méthodes et Method(i) récupère la i-ème méthode.
  3. Extraire les noms des méthodes : Pour chaque méthode, extrayez son nom à l'aide du champ Nom du type réflexion.Méthode. La liste résultante des noms de méthodes est stockée dans la tranche s.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!