Go의 파서 및 ast 패키지를 사용함에도 불구하고 제공된 코드는 구조체 유형 FirstType에 대한 문서 주석을 감지할 수 없습니다. 및 SecondType.
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에 대한 잃어버린 문서.
그러나 이 접근 방식은 단일 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 및 개인 모두와 연결됩니다. TypeSpecs.
AST를 사용하여 주석을 구문 분석하는 것이 가능하지만 이 작업을 처리하려면 go/doc 패키지를 사용하는 것이 좋습니다. go/doc 패키지는 구조체 유형을 포함한 다양한 Go 구성 요소에 대한 문서 주석을 효과적으로 검색할 수 있습니다.
위 내용은 Go Parser 및 Ast 패키지가 구조체 유형에 대한 문서 주석을 감지하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!