ホームページ > バックエンド開発 > Golang > GoLang パッケージの構造を抽出するにはどうすればよいですか?

GoLang パッケージの構造を抽出するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-30 02:25:28
オリジナル
412 人が閲覧しました

How to Extract the Structure of a GoLang Package?

Golang でのパッケージの構造の取得

GoLang パッケージ内に含まれるすべての構造を名前またはインターフェイスのリストとして列挙できますか?

例:

struct := list("fmt")
ログイン後にコピー

期待される出力:

Formatter
GoStringer
Scanner
State
Stringer
ログイン後にコピー

最も最適なアプローチには、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")
            }
        }
ログイン後にコピー

以上がGoLang パッケージの構造を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート