stackoverflow 地址: https://stackoverflow.com/questions/76947041/code-generation-in-golang-using-the-go-ast-package-to-add-doc-comments-but-comm
当我在 errrmsg 目录中执行 GO GENERATE 时,函数的注释不在正确的位置
// Code generated by gen_code. DO NOT EDIT.
// 提示内容:"成功"
// 状态码:10000
// 提示内容:"失败"
// 状态码:10001
package errmsg
const (
TypeCodeSuccess = 10000
TypeCodeFailed = 10001
)
func GetSuccess() Resp {
return Resp{Code: TypeCodeSuccess, Msg: TypeMsgSuccess}
}
func GetFailed() Resp {
return Resp{Code: TypeCodeFailed, Msg: TypeMsgFailed}
}
这是我的代码地址: https://github.com/KingPuiWong/generrcode/blob/master/gencode/main.go
当我试着这样做,但还是不起作用时,你知道怎么解决它吗?谢谢。
commentMap := ast.NewCommentMap(fset, file, file.Comments)
ast.Inspect(file, func(node ast.Node) bool {
switch x := node.(type) {
case *ast.FuncDecl:
if strings.HasPrefix(x.Name.Name, "Get") {
commentText := x.Doc.List[0].Text
fmt.Println()
fmt.Printf("comment:%s", commentText)
commentMap[x] = []*ast.CommentGroup{{List: []*ast.Comment{{Text: commentText, Slash: token.Pos(int(x.Pos() - 1))}}}}
}
}
return true
})
ast.Print(fset, file)
//os.Exit(1)
// 保存已分配的错误码
err = saveLastErrorCode(projectName, lastCode)
if err != nil {
return err
}
这是我想要生成的。
// Code generated by gen_code. DO NOT EDIT.
package errmsg
const (
TypeCodeSuccess = 10000
TypeCodeFailed = 10001
)
// 提示内容:"成功"
// 状态码:10000
func GetSuccess() Resp {
return Resp{Code: TypeCodeSuccess, Msg: TypeMsgSuccess}
}
// 提示内容:"失败"
// 状态码:10001
func GetFailed() Resp {
return Resp{Code: TypeCodeFailed, Msg: TypeMsgFailed}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.