Go のパーサーと ast パッケージを使用しているにもかかわらず、提供されたコードは構造体型 FirstType のドキュメント コメントを検出できません
go/doc パッケージの readType 関数は、TypeSpec に関連付けられたドキュメントがない場合、ドキュメントは GenDecl から取得されることを示唆しています。
AST を検査してこの問題に対処するために、コードに次の変更が加えられました:
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 }) } }
*ast.GenDecl のケースを含めることにより、プログラムは次のように出力するようになりました。 FirstType と SecondType の失われたドキュメント。
ただし、複数の構造体型が 1 つの TypeSpec で定義されている場合、このアプローチには制限があります。
// This documents FirstType and SecondType together type ( // FirstType docs FirstType struct { // FirstMember docs FirstMember string } // SecondType docs SecondType struct { // SecondMember docs SecondMember string } )
この場合、ドキュメントは GenDecl と個々の TypeSpec の両方に関連付けられます。
AST を使用してコメントを解析することは可能ですが、go/doc パッケージを使用してコメントを解析することをお勧めします。このタスクを処理します。 go/doc パッケージは、構造体型を含むさまざまな Go コンポーネントのドキュメント コメントを効果的に取得できます。
以上がGo Parser と Ast パッケージが構造体型のドキュメント コメントを検出しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。