Heim  >  Artikel  >  Backend-Entwicklung  >  Wie drucke ich den Methodensatz einer Schnittstelle in Golang?

Wie drucke ich den Methodensatz einer Schnittstelle in Golang?

Susan Sarandon
Susan SarandonOriginal
2024-10-31 22:23:29128Durchsuche

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

Zugriff auf den Methodensatz einer Schnittstelle in Golang

Das Bestimmen der Methoden innerhalb einer Schnittstelle kann für verschiedene Szenarien nützlich sein. In diesem Artikel wird untersucht, wie der Methodensatz einer Schnittstelle in Golang effektiv gedruckt wird.

Herausforderung

Angesichts der folgenden Schnittstelle:

<code class="go">type Searcher interface {
    Search(query string) (found bool, err error)
    ListSearches() []string
    ClearSearches() (err error)
}</code>

Wie Können wir die Namen dieser Methoden (Search, ListSearches und ClearSearches) ausgeben, ohne vorher einen konkreten Typ zu kennen, der die Schnittstelle implementiert?

Lösung

Das Reflect-Paket bietet die Möglichkeit, Typen zur Laufzeit zu überprüfen. Durch die Nutzung dieses Pakets können wir die Typinformationen unserer Schnittstelle abrufen und ihre Methoden untersuchen.

<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>

Dieser Code erreicht unser Ziel, indem er den Schnittstellentyp reflektiert und seine Methoden iteriert, um ihre Namen auszugeben.

Ausgabe

Das Ausführen dieses Programms erzeugt die gewünschte Ausgabe:

Search
ListSearches
ClearSearches

Das obige ist der detaillierte Inhalt vonWie drucke ich den Methodensatz einer Schnittstelle in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn