我事先完成了一个project,名为A,这个A和它的models包也正常地实现了它们的功能。
我接着创建了project B, 在B中使用了A models中的一个struct类型,从而引入了`A/models`,使用`go build`命令编译通过。
这时候问题来了,run之后就卡住了执行,甚至main程序入口都没有进去,func main() 的第一行我打的log都没有出来。把`A/models`的引用取消,就可以正常运行。
那么,是什么情况会使得引用一个没有语法错误的包,导致程序无法进入main入口运行但可以编译呢?
问题找到并解决了。我调用的A/models里面,有一个GO代码文件我使用了init(),而里面我做了一个导致跨包死循环的操作,因此在B项目引入,并resolve import 的时候,在这里死循环了,根本没有机会走到main()中,给了我一种卡住的错觉。因此,还是碰到问题从原理上分析,慎重使用init()逻辑,路还很长。。。
#3
更多评论