Rumah > pembangunan bahagian belakang > Golang > Mengapa My Go Parser Tidak Mengesan Komen Dokumen pada Jenis Struktur?

Mengapa My Go Parser Tidak Mengesan Komen Dokumen pada Jenis Struktur?

Mary-Kate Olsen
Lepaskan: 2024-11-07 19:32:02
asal
1089 orang telah melayarinya

Why is My Go Parser Not Detecting Doc Comments on Struct Types?

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

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!

sumber:php.cn
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