首先,这个问题往往是在golang中引入自己创建的包时发生的错误。解决方案如下
检查被引入包下是否存在go.mod,因为你首先要保证你引入的是一个模块,而不只是一个文件夹,类似python包下init.py。因此,一个列子如下:假如你想在check模块中使用model中的变量,正确的架构应该是:
(base) zhaodeng@zhaodeMacBook-Pro rpc % tree
project
├── check
│ ├── go.mod
│ ├── go.sum
└── model├── go.mod├── go.sum
假设你的架构已经是上面这样了,那么需要update一下go.mod。仍然以上面的:想在check模块中使用model中的变量为例。这时需要在check/go.mod中添加
require project/model v0.0.0replace project/model v0.0.0 => ../model
一些细节:…/model 后不加版本,具体的version是不重要的
注意的replace里面的内容,如果是如下:
require project/model v0.0.0replace /project/model v0.0.0 => ../model
注意project前面多余的这个/
他可能是造成错误的主要原因!!!!
重新修改后:
require project/model v0.0.0replace project/model v0.0.0 => ../model
即可解决最主要的问题。
如果以上的方法都不行, 并且你作为一个有经验的程序员感觉自己理解了项目结构,那么我推荐你尝试将你的项目整体放在一个新的文件夹下,比如原来我的项目结构如下:
project
├── check
│ ├── go.mod
│ ├── go.sum
└── model├── go.mod├── go.sum
现在尝试下面这个方案:
project
├──user├── check│ ├── go.mod│ ├── go.sum└── model├── go.mod├── go.sum