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")
Output yang dijangkakan:
Formatter GoStringer Scanner State Stringer
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;
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") } }
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Struktur Pakej GoLang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!