Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengekstrak Struktur Pakej GoLang?

Bagaimana untuk Mengekstrak Struktur Pakej GoLang?

Barbara Streisand
Lepaskan: 2024-10-30 02:25:28
asal
487 orang telah melayarinya

How to Extract the Structure of a GoLang Package?

Mendapatkan semula Struktur Pakej di Golang

Bolehkah kita menghitung semua struktur yang terkandung dalam pakej GoLang sebagai senarai nama atau antara muka?

Contohnya:

struct := list("fmt")
Salin selepas log masuk

Output yang dijangkakan:

Formatter
GoStringer
Scanner
State
Stringer
Salin selepas log masuk

Pendekatan paling optimum melibatkan penghuraian kod sumber Go (yang boleh diklon menggunakan arahan hg clone https://code.google.com/p/go/), secara khusus mengekstrak kejadian ast.StructType.

Proses ini ditunjukkan dalam pencetak cantik:

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;
Salin selepas log masuk

Sepanjang baris yang serupa , alat go/lint menjalankan fungsi yang serupa dalam lint.go:

    case *ast.StructType:
        for _, f := range v.Fields.List {
            for _, id := range f.Names {
                check(id, "struct field")
            }
        }
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Struktur Pakej GoLang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan