ランタイム パッケージ ディスカバリーを使用したパッケージ タイプの確認
リフレクト パッケージにはタイプ ディスカバリー メカニズムがないため、エクスポートされたパッケージを検出するための代替アプローチが必要です実行中の Go 内の型、特に構造体package.
Go 1.5 以降のソリューション:
Go 1.5 でのタイプとインポーター パッケージの導入を利用して、バイナリ パッケージとソース パッケージを検査できます。次の例を考えてみましょう。
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) } }
このコードは、インポーター パッケージを使用した「time」パッケージ内のエクスポートされた名前の探索を示しています。
Pre-Go 1.5 アプローチ:
Go 1.5 より前では、唯一の実行可能な解決策は、ast パッケージを使用してコンパイルすることでしたソースコード。ただし、このアプローチにはさらなる複雑さが伴いました。
以上が実行中の Go パッケージでエクスポートされた型を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。