Go Parser Tidak Mengesan Komen Dokumen pada Jenis Struktur
Dalam Go, mengenal pasti ulasan Dokumen yang berkaitan untuk jenis struct boleh dicapai melalui parser dan pakej ast. Berikut ialah penyiasatan tentang sebab ulasan ini mungkin tidak dapat dikesan:
Isunya
Kod sumber yang disediakan dalam soalan menunjukkan percubaan untuk mendapatkan ulasan Doc untuk jenis struct menggunakan Pakej parser Go. Walau bagaimanapun, ulasan Doc untuk jenis struct FirstType dan SecondType tiada dalam output.
Penyelesaian
Untuk menyelesaikan masalah ini, kita perlu mempertimbangkan cara Go mengendalikan dokumentasi dalam pokok sintaks abstraknya (AST). Pakej go/doc mencadangkan bahawa apabila tiada dokumentasi yang dilampirkan pada TypeSpec, dokumentasi induk GenDecl hendaklah digunakan sebaliknya.
Memeriksa GenDecls
Menyesuaikan kod daripada soalan untuk memasukkan kes untuk *ast.GenDecl:
for _, f := range d { ast.Inspect(f, func(n ast.Node) bool { switch x := n.(type) { case *ast.FuncDecl: fmt.Printf("%s:\tFuncDecl %s\t%s\n", fset.Position(n.Pos()), x.Name, x.Doc) case *ast.TypeSpec: fmt.Printf("%s:\tTypeSpec %s\t%s\n", fset.Position(n.Pos()), x.Name, x.Doc) case *ast.Field: fmt.Printf("%s:\tField %s\t%s\n", fset.Position(n.Pos()), x.Names, x.Doc) case *ast.GenDecl: fmt.Printf("%s:\tGenDecl %s\n", fset.Position(n.Pos()), x.Doc) } return true }) }
Menjalankan kod ini menghasilkan ulasan Doc yang tiada untuk FirstType dan SecondType.
Gelagat Tidak Dijangka
Walaupun kaedah ini mendedahkan ulasan Dokumen yang hilang, kaedah ini juga mendedahkan bahawa dokumentasi untuk GenDecl disertakan secara tidak sengaja. Ini kerana AST melihat definisi jenis struct sebagai penguncupan versi takrif jenis dalam kurungan, mengendalikan semua definisi secara serupa tanpa mengira pengelompokan.
Kesimpulan
Untuk mendapatkan semula Dokumen dengan berkesan komen untuk jenis struct menggunakan AST tulen, adalah penting untuk mengakui tingkah laku ini. Walau bagaimanapun, menggunakan pakej go/doc kekal sebagai pendekatan pilihan kerana ia mengelakkan kerumitan ini dan menyediakan penyelesaian komprehensif untuk penghuraian dokumentasi dalam Go.
Atas ialah kandungan terperinci Mengapa My Go Parser Tidak Mengesan Komen Dokumen pada Jenis Struktur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!