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
Patricia ArquetteOriginal
2024-12-26 03:11:09438Durchsuche

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
}

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

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!

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