Go でパッケージ内のすべての構造を取得する方法
Go パッケージ内では、名前またはインターフェイスの形式。これを行うための最良のアプローチは、Go ソース コードを解析し、特に ast.StructType を分離することです。
ソース解析
ソース コードを解析するには、Go次のコマンドを使用してソースのクローンを作成できます。
hg clone https://code.google.com/p/go/
ソースが利用可能になったら、次のコード スニペットに示すように、きれいなプリンタを使用して ast.StructType を分離できます。
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; } }
代替方法
go/lint ツールで使用される別のアプローチは、lint.go ファイルで同じタスクを実行することです。
case *ast.StructType: for _, f := range v.Fields.List { for _, id := range f.Names { check(id, "struct field") } }
次のように実装します。このアプローチでは、指定したパッケージ内で定義されているすべての構造のリストを取得できます。
以上がGo パッケージ内のすべての構造を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。