Verwenden der Laufzeitpaketerkennung zur Ermittlung von Pakettypen
Das Fehlen eines Typerkennungsmechanismus im Reflect-Paket erfordert einen alternativen Ansatz zur Erkennung exportierter Pakete Typen, insbesondere Strukturen, innerhalb eines laufenden Go-Pakets.
Lösung in Go 1.5 und Später:
Durch die Einführung der Typen und Importpakete in Go 1.5 ist es möglich, Binär- und Quellpakete zu überprüfen. Betrachten Sie das folgende Beispiel:
package main import ( "fmt" "go/importer" ) func main() { pkg, err := importer.Default().Import("time") if err != nil { fmt.Printf("error: %s\n", err.Error()) return } for _, declName := range pkg.Scope().Names() { fmt.Println(declName) } }
Dieser Code zeigt die Untersuchung exportierter Namen innerhalb des „time“-Pakets mithilfe des Importer-Pakets.
Pre-Go 1.5-Ansatz:
Vor Go 1.5 bestand die einzig praktikable Lösung darin, das ast-Paket zum Kompilieren des Quellcodes zu verwenden. Dieser Ansatz brachte jedoch zusätzliche Komplexität mit sich.
Das obige ist der detaillierte Inhalt vonWie kann ich exportierte Typen in einem Running Go-Paket erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!