Golang でパッケージ内のすべての構造体を取得する
AST 表現にアクセスすることで、パッケージ内のすべての構造体を列挙できます。 1 つのアプローチは、パッケージのソース コードを解析することです。これには、Go リポジトリのクローンを作成し、関連するデータを抽出する必要があります。
以下のコードは、AST パーサーを使用してこれを実現する方法の概要を示しています。
<code class="go">func (P *Printer) Type(t *AST.Type) int { separator := semicolon; switch t.form { case AST.STRUCT, AST.INTERFACE: switch t.form { case AST.STRUCT: P.String(t.pos, "struct"); case AST.INTERFACE: P.String(t.pos, "interface"); } if t.list != nil { P.separator = blank; P.Fields(t.list, t.end); } separator = none; } }</code>
Go のリンターの別の例は、同様のアプローチを示しています。
<code class="go">case *ast.StructType: for _, f := range v.Fields.List { for _, id := range f.Names { check(id, "struct field") } }</code>
AST 表現をトラバースすることで、特定のパッケージ内のすべての構造体に関する情報を収集し、必要な名前またはインターフェイスのリストを提供できます。
以上がGolang でパッケージ内のすべての構造体のリストを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。