Rumah > Artikel > pembangunan bahagian belakang > Mengapa Pakej Go Parser dan Ast Tidak Mengesan Komen Dokumen pada Jenis Struktur?
Walaupun menggunakan parser Go's dan pakej ast, kod yang disediakan tidak dapat mengesan komen dokumentasi pada jenis struct FirstType dan SecondType.
Fungsi readType pakej go/doc mencadangkan bahawa apabila TypeSpec tidak mempunyai dokumentasi yang berkaitan, dokumentasi itu diambil daripada GenDecl.
Untuk memeriksa AST dan menangani isu ini, perubahan berikut telah dibuat kepada kod:
func main() { // ... for _, f := range d { ast.Inspect(f, func(n ast.Node) bool { switch x := n.(type) { // ... case *ast.GenDecl: fmt.Printf("%s:\tGenDecl %s\n", fset.Position(n.Pos()), x.Doc.Text()) } return true }) } }
Dengan memasukkan kes untuk *ast.GenDecl, program kini mengeluarkan dokumentasi yang hilang untuk FirstType dan SecondType.
Walau bagaimanapun, pendekatan ini mempunyai had apabila pelbagai jenis struct ditakrifkan dalam satu TypeSpec:
// This documents FirstType and SecondType together type ( // FirstType docs FirstType struct { // FirstMember docs FirstMember string } // SecondType docs SecondType struct { // SecondMember docs SecondMember string } )
Dalam kes ini, dokumen menjadi dikaitkan dengan kedua-dua GenDecl dan TypeSpecs individu.
Semasa menggunakan AST untuk menghuraikan ulasan adalah mungkin , adalah lebih baik untuk menggunakan pakej go/doc untuk mengendalikan tugas ini. Pakej go/doc boleh mendapatkan semula ulasan dokumentasi untuk pelbagai komponen Go dengan berkesan, termasuk jenis struct.
Atas ialah kandungan terperinci Mengapa Pakej Go Parser dan Ast Tidak Mengesan Komen Dokumen pada Jenis Struktur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!