我写了一个本地模块a,go mod文件内容:
module a
go 1.13
我模块a想作为一个公共的组件,就在放在本地的。
然后写了个应用b,go mod文件内容:
module b
go 1.13
require (
github.com/go-sql-driver/mysql v1.4.1
github.com/a v0.0.0
)
replace github.com/a => ../a
出现的问题是,我再写模块a的时候,里面又内部的包需要被其他的内部包引用。
我写import a/ap
,测试a没问题。
我再b模块编译的时候就会报错了,会报不能导入a/ap
。
像这样,应该怎么在a模块内部自己用自己的包,在不会再其他模块使用的时候不会编译报错?
有疑问加站长微信联系(非本文作者)

方法一:
1、 在a/ap目录下使用
go mod init a/ap
新建mod文件;2、 在b的mod里面添加
replace a/ap => ../a/ap
;方法二:
1、在b模块的mod中替换时,使用绝对路径,
replace a => /xxx/a
还有一种就是: 1、a模块使用
go mod init github.com/xxx/a
;2、上传a模块到github对应xxx账号;
3、在b引用的时候,也不用replace了,直接
import "github.com/xxx/a"
, 让go mod自己去缓存;我觉得这个才是正解。
解决了