Maison  >  Article  >  développement back-end  >  Comment récupérer l’ensemble de méthodes d’une interface dans Golang ?

Comment récupérer l’ensemble de méthodes d’une interface dans Golang ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-02 03:31:03997parcourir

How to Retrieve the Method Set of an Interface in Golang?

Comment récupérer l'ensemble de méthodes d'une interface dans Golang

Déterminer l'ensemble de méthodes d'une interface dans Golang vous aide à obtenir une liste de tous les méthodes appliquées par une interface spécifique. Pour y parvenir, nous utilisons le package Reflect.

Extraction d'ensemble de méthodes à l'aide de Reflection

Sans connaissance préalable du type concret d'implémentation, vous pouvez utiliser l'extrait de code suivant pour imprimer l'ensemble de méthodes :

<code class="go">package main

import (
    "fmt"
    "reflect"
)

type Searcher interface {
    Search(query string) (found bool, err error)
    ListSearches() []string
    ClearSearches() (err error)
}

func main() {
    t := reflect.TypeOf(struct{ Searcher }{})
    for i := 0; i < t.NumMethod(); i++ {
        fmt.Println(t.Method(i).Name)
    }
}</code>

En utilisant la réflexion, nous obtenons le reflet.Type de la structure anonyme conforme à l'interface. La fonction NumMethod() récupère le nombre total de méthodes définies par l'interface, et la boucle parcourt chaque méthode, en imprimant son nom.

L'exécution de l'extrait de code produira le résultat suivant :

Search
ListSearches
ClearSearches

Cette technique d'extraction d'ensemble de méthodes s'avère utile lorsque vous devez travailler avec des interfaces de manière dynamique sans connaître les types d'implémentation.

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