Heim > Backend-Entwicklung > Golang > Wie liste ich öffentliche Methoden eines Go-Pakets auf?

Wie liste ich öffentliche Methoden eines Go-Pakets auf?

Barbara Streisand
Freigeben: 2024-12-06 12:13:14
Original
440 Leute haben es durchsucht

How to List Public Methods of a Go Package?

Öffentliche Methoden eines Pakets in Go auflisten

Frage:

Wie ist das möglich? die öffentlichen Methoden eines Pakets in Go auflisten? Betrachten Sie die folgende Codestruktur:

main.go:

package main

func main() {
    // list public methods in here
}
Nach dem Login kopieren

libs/method.go:

package libs

func Result1() {
    fmt.Println("method Result1")
}

func Result2() {
    fmt.Println("method Result2")
}
Nach dem Login kopieren

Antwort:

Bedauerlicherweise fehlt Go eine direkte Funktion für diese Anfrage. Wenn ein Paket importiert wird, entfernt der Compiler möglicherweise nicht verwendete Methoden während der Optimierung. Somit garantiert das bloße Importieren eines Pakets nicht das Vorhandensein aller Methoden.

Alternativen:

Statische Analyse:

Mit der Reflection-Bibliothek von Go können Sie den Quellcode des Pakets analysieren und Funktionsdeklarationen extrahieren. Betrachten Sie das folgende Beispiel:

import (
    "fmt"
    "go/parser"
    "go/token"
)

func main() {
    fileset := token.NewFileSet()
    packages, err := parser.ParseDir(fileset, "./libs", nil, 0)
    if err != nil {
        fmt.Println("Parsing failed:", err)
        return
    }

    methods := []string{}
    for _, p := range packages {
        // Get all methods in each source file.
        for _, f := range p.Files {
            for _, dec := range f.Decls {
                if fn, ok := dec.(*parser.FuncDecl); ok && fn.Name.IsExported() {
                    methods = append(methods, fn.Name.String())
                }
            }
        }
    }

    fmt.Println("Exported methods in package 'libs':", methods)
}
Nach dem Login kopieren

Hinweis: Dieser Ansatz stellt nur Funktionsdeklarationen bereit, nicht deren Implementierungen.

Dynamische Reflexion:

Alternativ können Sie das Reflect-Paket von Go zur Laufzeit verwenden, um die Methoden eines Werts zu überprüfen. Hierzu ist jedoch eine initialisierte Instanz des betreffenden Typs erforderlich.

Bedenken Sie, dass diese Ansätze Einschränkungen unterliegen und möglicherweise nicht für alle Anwendungsfälle geeignet sind.

Das obige ist der detaillierte Inhalt vonWie liste ich öffentliche Methoden eines Go-Pakets auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage