1.go mod 允许在$GOPATH路径外 建立文件夹 go mod init 模块名称
譬如 github.com/walkmiao/testgomod
那么将会在此目录下生成go.mod文件。随后如果添加一个文件并写入代码提交到远程仓库。
第一个问题想问的是 这里的模块名称
与远程仓库名称
是否必须要一致?这里我不知道这个模块名称有什么用。
2.然后我又新建一个mod管理项目usergomod,使用之前的testgomod下的包。在我测试完后,我删除了本地 $GOPATH/pkg/mod下的所有东西 并且也删除了远程仓库。为什么在usegomod目录下go build依然能够拉取之前的mod。真是百思不得其解
1) module name 是你在程序中引用一个 module 用的名字。
import
的时候是可以改的。path
是告诉程序去哪里找到这个 module 。两者并不一定一致,但是通常推荐一致。2)
pkg/mod
是你的依赖。go build
甚至并不需要你自己的 module 在 git 控制下。但是依赖的话,会顺着 import 的路径去远程仓库拉取,然后放在pkg/mod
里。其实也可以为依赖指定本地路径,这样就不去远程仓库拉了。详见 When should I use the replace directive?