goland中 如何快速定位一个package中的所有init方法

发布于 2022-09-13 00:51:18 字数 222 浏览 19 评论 0

使用goland开发go项目 在导入包的时候 有时候需要定位下包中的所有init方法 这个时候 goland如何快速定位包中init方法

比如下面截图 如果快速定位beego web包下所包含的所有init 方法 (除过FIND搜这个目录下init关键字之外 有没有更好的方法快速定位)

image.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

§普罗旺斯的薰衣草 2022-09-20 00:51:18
func main() {
    fset := token.NewFileSet()
    dir, err := parser.ParseDir(fset, ".", func(fileInfo os.FileInfo) bool {
        return strings.HasSuffix(fileInfo.Name(), ".go")
    }, parser.ParseComments)

    if err != nil {
        panic(err)
    }

    for _, pkg := range dir {
        for _, f := range pkg.Files {
            for _, decl := range f.Decls {
                switch t := decl.(type) {
                case *ast.FuncDecl:
                    if t.Name.Name == "init" {
                        fmt.Printf("find function name:%s, file:%s, pkg:%s\n", t.Name, f.Name, pkg.Name)
                    }
                }
            }
        }
    }
}
暮凉 2022-09-20 00:51:18

如果是ide的话,你就直接在指定目录搜索关键词了:

func init() {
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文