很多文章在介绍 go module 的时候都会提到“新手会疑惑为什么代码要放到 GOPATH 里”,以此引出 go module。 搜了一些关于 go module 的教程,还是有很多疑惑,感觉比 GOPATH 难理解。 用 GOPATH 的时候,需要什么包,提前安装到 GOPATH 就完事,代码补全由 vscode 插件完成。
以下是关于 go module 的疑问: 1.为什么 go mod init [module] 一定要指定 module,这个 module 名有什么意义,可以随便取吗 2.怎么导入当前工作空间的包 3.怎么导入其他目录的包 4.vscode 怎么使用 go module,以前代码补全直接到 GOPATH 目录下找 5.如果用 vscode 写一个新程序,go mod init,go mod tidy,go mod vendor 分别在哪个阶段执行
go module 才是解决了 gopath 不好用的问题! 很奇怪为什么还在认为 gopath 好用
Hanggi
2019-09-05 08:15:43 +08:00
你问的这些问题都不是问题,谷歌搜一下就好了
SpiderShrimp
2019-09-05 08:55:04 +08:00
go 1.12 就该用 go module 了
lrh3321
2019-09-05 09:41:02 +08:00
go 1.12 暂时不打算升 1.13.不过早就用上 go module 了
linxl
2019-09-05 10:00:00 +08:00
就几个命令...
Pythondr
2019-09-05 10:47:56 +08:00
1. 理论上 go mod init 时的 module 名可以随便取, 但是如果是要作为一个包被其它项目引用,那么就必须遵守一定的规范了,不然到时候 go mod 是引用不到的。打个比方, 如果你的包是托管在 github 上, 那么你的 go module 名就应该是 github.com/xxx/package_name。 2. 导入当前项目的包也很简单, 就是将你的 go mod 名作为项目根目录就行了 3. 如果需要导入本地包的化,就需要用到 go mod 的 replace 了, 但是一般不推荐这么做,貌似 replace 只支持绝对路径,这就给协同开发带来了不便,所有建议把包都用 go mod 来管理吧。 5. init 是初始化 gomod, tidy 是下载引用包,清除无用包,vendor 是将项目中所有的引用包 copy 到当前项目下的 vendor 目录中来。
wsseo
2019-09-05 11:23:59 +08:00
@Pythondr 3.本地其他包也用 go mod 管理,包引用的时候还是要用 replace,不然找不到? 如果所有包都要搞 cvs,感觉很蹩脚。