エクスポートされたパッケージの型を動的に検索する
reflect パッケージの限定された型検出機能とは対照的に、この記事では、すべてのパッケージ型を検出するための代替方法を検討します。パッケージタイプ (特に構造体) runtime.
タイプとインポーターの使用 (Go 1.5 以降)
Go 1.5 以降のバージョンでは、タイプとインポーター パッケージによってパッケージを検査する強力な方法が導入されています。これらの使用方法は次のとおりです。
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) } }
ast (Go の以前のバージョン) の使用
バージョン 1.5 より前では、ast パッケージを使用して解析および解析を行うことができます。ソースコードを検査して型を検出します。ただし、このアプローチはより複雑で、追加の解析コードが必要になる場合があります。
使用例の例
このタイプ検出機能は、さまざまなシナリオで使用できます。たとえば、コード生成ユーティリティでは、指定された型を埋め込む型を識別できます。これにより、手動の再生成手順を必要とせずに、検出された型に基づいてテスト関数を作成できます。
結論
reflect パッケージにはネイティブ型の検出がありませんが、 , Go は、実行時にパッケージの種類を調べるための代替方法を提供します。これにより、より柔軟な型のイントロスペクションが可能になり、コード生成やテスト フレームワークなどのさまざまなアプリケーションで活用できます。
以上がGo でエクスポートされたパッケージ タイプを動的に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。