Maison  >  Article  >  développement back-end  >  Comment imprimer l'ensemble de méthodes d'une interface dans Golang ?

Comment imprimer l'ensemble de méthodes d'une interface dans Golang ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-31 22:23:29128parcourir

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

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!

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