如下图所示目录结构
cmd
中是服务的包,显然auth,dbtables,pkg
都是为cmd服务的。
首先需要需要将auth,dbtables,pkg
定义到go.work
中,如下:
在这样在各个单独的go mod管理的模块就可以互相调用了。一般情况下这些都是IDE自动进行的,在通过go work结合后,进入会go解析器会自动给不同的包生成一个版本,这个版本不会出现在go mod
中例如使用go mod tidy
命令
正是由于这个的生成在其他mod中才可以导入,但是有时候ide会出现一些问题,把这个显示在了go mod
中
这样直接在go mod显示会导致go在拉去第三方包时都通过线上拉去,导致抱不到这个本地生成的包。
go work也会报错
这里有两个解决方案,第一种直接将显示在go mod的包替换掉本地路径拉去如下:
另一种方案是是直接将显示的本地生成的删掉。
再重新go mod tidy
即可,由解析控制从本地拉去。