Heim >Backend-Entwicklung >Golang >Wie kann ich auf alle exportierten Typen eines bestimmten Go-Pakets zugreifen?
Paketübergreifender Zugriff auf exportierte Typen
In Go können andere Pakete auf exportierte Typen zugreifen. Dies ermöglicht Wiederverwendung und Modularität beim Codedesign. Wie können Sie jedoch auf alle definierten exportierten Typen aus einem bestimmten Paket zugreifen?
Betrachten Sie das folgende Beispiel:
package demo type People struct { Name string Age uint } type UserInfo struct { Address string Hobby []string NickNage string }
In einem separaten Paket, sagen wir,
import "demo"
Aus diesem anderen Paket versuchen wir, alle exportierten Typen abzurufen, die im Demopaket definiert sind. Um dies zu erreichen, können wir das Paket go/importer nutzen:
package main import ( "fmt" "golang.org/x/tools/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) } }
Dieser Code importiert das Demopaket mithilfe des Importers und iteriert über die definierten Namen innerhalb seines Gültigkeitsbereichs. Die resultierende Ausgabe listet alle exportierten Typen auf, in diesem Fall:
People UserInfo
Es ist jedoch zu beachten, dass die Verwendung dieses Ansatzes zu einem Fehler auf dem Go Playground führen kann.
Das obige ist der detaillierte Inhalt vonWie kann ich auf alle exportierten Typen eines bestimmten Go-Pakets zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!