请问一下为什么删除pkg/route/router.go包的Initialize函数之后还会有循环引用情况?

大佬你好!我根据文中理解的循环引用情况简单画了一下包引用的图,我感觉在拆分出路由注册包之后并不会出现循环引用的问题(air也确实没有提示循环引用的情况)!如下图:

请问一下为什么删除pkg/route/router.go包的Initialize函数之后还会有循环引用情况?

请问下是不是我的理解有偏差,还请大佬指点下,谢谢🙏!

讨论数量: 7
Summer

把报错贴出来看看?

3年前 评论
Slairmy (楼主) 3年前
Summer (作者) 3年前

不好意思,有点表诉不清楚 :grin: 我主要纠结的是这个问题,如图:

file

将路由初始化放到bootstrap.go之后,替换main.go中的初始化代码,然后把pkg/route/router.go中的Initialize函数删除之后,文中说依然会出现循环引用的问题。原因是因为main.go文件中依然有使用route.GetRouteVariable()函数。然后我根据自己的理解画了一下包引用的图如下:

file 我的理解是执行上诉操作之后应该不会出现循环引用的问题了。而实际上我在按照文中的操作(没有在main.go文件中写getRouteVariable替换route.GetRouteVariable())来重构代码的时候air确实没有报过循环引用的错误。

请大佬指点下,🙏

3年前 评论

自己在阅读此处时也出现了疑惑,我的理解是拆分后 pkg/route/router.go 已经是一个单纯的工具包,只是单纯引用了 github.com/gorilla/muxnet/http,此时并不会再出现 循环引用 的问题。

3年前 评论

如你所画的图,拆分后的引用关系并没有构成环,所以当然就不是循环引用了

3年前 评论

@Slairmy 同款疑惑,应该是不会出现循环引用的情况了

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!