Accès à l'ensemble de méthodes d'une interface dans Golang
La détermination des méthodes au sein d'une interface peut être utile pour divers scénarios. Cet article explore comment imprimer efficacement l'ensemble de méthodes d'une interface dans Golang.
Défi
Étant donné l'interface suivante :
<code class="go">type Searcher interface { Search(query string) (found bool, err error) ListSearches() []string ClearSearches() (err error) }</code>
Comment peut-on imprimer les noms de ces méthodes (Search, ListSearches et ClearSearches) sans connaissance préalable d'un type concret implémentant l'interface ?
Solution
Le package Reflect fournit les moyens d’inspecter les types au moment de l’exécution. En tirant parti de ce package, nous pouvons récupérer les informations de type de notre interface et examiner ses 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>
Ce code atteint notre objectif en réfléchissant sur le type d'interface et en itérant sur ses méthodes pour imprimer leurs noms.
Sortie
L'exécution de ce programme produira la sortie souhaitée :
Search ListSearches ClearSearches
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!