エクスポートされたパッケージタイプを動的に見つける
反射パッケージの限られたタイプの発見機能とは対照的に、この記事では、ランタイムですべてのパッケージタイプ(特に構造体)を発見するための代替方法を説明します。後で)
in go 1.5および後続のバージョンでは、タイプとインポーターパッケージはパッケージを検査する強力な方法を導入します。それらを使用する方法は次のとおりです。 「FMT」 「行く/輸入業者」 )) func main(){ pkg、err:= inporter.default()。import( "time") err!= nil { fmt.printf( "error:%s \ n"、err.error()) 戻る } _、declname:= range pkg.scope()。names(){ fmt.println(declname) } }
AST(以前のバージョンのgo)
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) } }を使用して、バージョン1.5の前に、ASTパッケージを使用してソースコードを解析および検査することができます。ただし、このアプローチはより複雑であり、追加の解析コードが必要になる場合があります。たとえば、コード生成ユーティリティでは、指定されたタイプを埋め込むタイプの識別を可能にします。これにより、手動の再生ステップを必要とせずに発見されたタイプに基づいてテスト関数を作成できます。これにより、より柔軟なタイプの内省が可能になり、コード生成やテストフレームワークなど、さまざまなアプリケーションでレバレッジできます。
。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3