Maison > développement back-end > Golang > Comment récupérer une liste de noms de méthodes à partir d'une interface dans Go à l'aide de la réflexion ?

Comment récupérer une liste de noms de méthodes à partir d'une interface dans Go à l'aide de la réflexion ?

Barbara Streisand
Libérer: 2024-10-30 09:15:27
original
967 Les gens l'ont consulté

How do you retrieve a list of method names from an interface in Go using reflection?

Obtention d'une liste de noms de méthodes à partir d'une interface

Dans Go, la réflexion permet d'inspecter et de manipuler la structure interne d'un programme au moment de l'exécution . Cela inclut la possibilité d'accéder à des informations sur un type d'interface, telles que ses noms de méthodes.

Considérez l'interface suivante :

<code class="go">type FooService interface {
    Foo1(x int) int
    Foo2(x string) string
}</code>
Copier après la connexion

Pour obtenir une liste des noms de méthodes pour cette interface en utilisant réflexion :

  1. Obtenir le reflet.Type pour le type d'interface :
<code class="go">t := reflect.TypeOf((*FooService)(nil)).Elem()</code>
Copier après la connexion

Cette ligne récupère le reflet.Type pour le type béton qui implémente l'interface FooService.

  1. Récupérer le nombre de méthodes :
<code class="go">for i := 0; i < t.NumMethod(); i++ {</code>
Copier après la connexion

La fonction NumMethod() renvoie le nombre de méthodes dans l'interface.

  1. Obtenir les noms des méthodes :
<code class="go">s = append(s, t.Method(i).Name)</code>
Copier après la connexion

La fonction Method(i) renvoie un objet réflexion.Method représentant la méthode à l'index i. Le champ Nom de cet objet contient le nom de la méthode.

Les listes résultantes contiendront les noms de méthodes ["Foo1", "Foo2"].

Explications :

  • La syntaxe (*FooService)(nil) est utilisée pour créer un pointeur vers une instance anonyme de l'interface FooService. Ceci est nécessaire pour obtenir le reflet.Type pour l'interface.
  • La méthode Elem() renvoie le reflet.Type pour le type concret qui implémente l'interface, au lieu du type d'interface lui-même.
  • La fonction NumMethod() renvoie le nombre de méthodes déclarées dans l'interface, même si le type concret implémente des méthodes supplémentaires.

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