1. 多module (项目下有几个包,就存在几个go.mod)
# 分别在main包、a包、b包下初始化mod
go mod init com.weizhi/hello
go mod init com.weizhi/a
go mod init com.weizhi/b
# main包引入 a
import (a "com.weizhi/a")
a.fun()
# 在main包主目录下:a包需要mod edit -replace 才可在main包的mod文件中自动生成对应a版本号
go mod edit -replace com.weizhi/a=./a
# a包引入b
import (b "com.weizhi/b")
b.fun()
# 在a包主目录下:b包需要mod edit -replace 才可在main包的mod文件中自动生成对应a版本号
go mod edit -replace com.weizhi/b=./b
# 在main包主目录下:
go mod edit -replace com.weizhi/a=./a/b
go mod tidy
以上处理完之后,会自动在god.mod中发生如下变化
2. 单module (项目下只有main包存在go.mod)
main包的go.mod
与main.go同目录下新增包 a,注意此时a下无需go mod init,所以不存在go.mod
此时main引入a,只需要 import ("com.weizhi/hello/a"),依据main包的module名作为目录找其他本地包的相对目录