Heim > Backend-Entwicklung > Golang > Wie kann ich alle exportierten Typen aus einem Go-Paket abrufen, ohne es zu importieren?

Wie kann ich alle exportierten Typen aus einem Go-Paket abrufen, ohne es zu importieren?

Patricia Arquette
Freigeben: 2024-12-26 03:11:09
Original
439 Leute haben es durchsucht

How Can I Retrieve All Exported Types from a Go Package Without Importing It?

So prüfen Sie exportierte Typen aus einem Paket

In Go können Typen aus einem Paket exportiert werden, um sie für andere Pakete zugänglich zu machen. Manchmal kann es erforderlich sein, auf Informationen zu diesen exportierten Typen zuzugreifen, ohne das Paket direkt zu importieren. In diesem Artikel wird erläutert, wie Sie mithilfe des Pakets go/importer alle definierten Typen aus einem bestimmten Paket exportieren können.

Frage:

Betrachten Sie das folgende Demopaket:

package demo

type People struct {
    Name string
    Age  uint
}

type UserInfo struct {
    Address  string
    Hobby    []string
    NickNage string
}
Nach dem Login kopieren

Wie können wir in einem anderen Paket alle exportierten Typen aus der Demo abrufen? Paket?

Antwort:

Um dies zu erreichen, können wir das Paket go/importer verwenden, das eine API zum Importieren von Paketen und zum Überprüfen ihres Inhalts bereitstellt. So geht's:

import (
    "fmt"
    "go/importer"
)

func main() {
    pkg, err := importer.Default().Import("demo")
    if err != nil {
        fmt.Println("error:", err)
        return
    }
    for _, declName := range pkg.Scope().Names() {
        fmt.Println(declName)
    }
}
Nach dem Login kopieren

In diesem Code importieren wir zuerst das Demo-Paket und verwenden dann die Funktion importer.Default().Import("demo"), um das *Package zu erhalten, das die Demo darstellt Paket.

Als nächstes iterieren wir über die Namen des Paketbereichs, der die Namen aller exportierten Typen in diesem Paket enthält. Diese Namen werden dann in der Standardausgabe ausgegeben.

Hinweis: Wenn Sie diesen Code in Go Playground ausführen, wird wahrscheinlich ein Fehler auftreten. Dies liegt daran, dass die Go Playground-Umgebung nicht über die Möglichkeit verfügt, Paketmetadaten aus externen Quellen abzurufen.

Das obige ist der detaillierte Inhalt vonWie kann ich alle exportierten Typen aus einem Go-Paket abrufen, ohne es zu importieren?. 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