首頁 > 後端開發 > Golang > 如何在Golang中取得包內所有結構體的列表?

如何在Golang中取得包內所有結構體的列表?

Linda Hamilton
發布: 2024-10-29 19:45:30
原創
425 人瀏覽過

How to Obtain a List of All Structs within a Package in Golang?

在Golang 中獲取包中的所有結構

您可以透過存取包中的AST 表示來枚舉包中的所有結構。一種方法是解析套件原始程式碼,這需要克隆 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 的linter 的另一個範例說明了類似的方法:

<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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板