Maison > développement back-end > Golang > 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
Libérer: 2024-10-31 22:23:29
original
219 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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
Copier après la connexion

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