使用 Go Module 后 GOPATH 的作用?

2020-08-08 23:57:00 +08:00
 morize
这两天开始自学 Go,装的 1.14.6 版本。看教程的时候看到官方推荐使用 Go Module 进行依赖管理,于是设置了 export GO111MODULE=on,项目文件可以不用放在 GOPATH/src 下,依赖也不会出现在 GOPATH/pkg 下。但是这样操作之后,GOPATH 还有什么作用?还有 Goland 设置里面的 Global GOPATH 和 Project GOPATH 的作用,看了官网的解释以后还不是很明白。
2152 次点击
所在节点    问与答
7 条回复
CEBBCAT
2020-08-09 01:38:32 +08:00
我也搞不太明白 GOPATH 之类的,但是好像 Go Module 的原文件都被放在了${GOPATH}/pkg/mod 下了
lrh3321
2020-08-09 07:42:51 +08:00
感觉是,${GOPATH}/pkg/mod 下面缓存了一堆包的 git 裸仓库,根据 go.mod 文件再 checkout 出对应版本的包缓存在里面,编译的时候自动使用对应的版本
sadfQED2
2020-08-09 09:26:28 +08:00
使用 go mod 后就能用了呀
sadfQED2
2020-08-09 09:26:53 +08:00
@sadfQED2 打错字了,

使用 go mod 后就没用了啊
morize
2020-08-09 22:41:51 +08:00
感谢楼上三位的回复,晚上继续研究了一下 Go Module,确实如楼上几位所说。但上手觉得有点不友好,引用本地的 package 还得先 require 再 replace 成本地路径,无疑增加了学习成本。如果用 GOPATH 的模式,又得跳出当前的项目范围去 ${GOPATH}/src 下修改,也是不方便。
这一通折腾的感想就是刚开始学习不要碰 Go Module,徒增烦恼,老老实实把项目放在 ${GOPATH}/src 下,等有依赖管理的需求再去搞 Go Module 。
tairan2006
2020-08-10 09:19:49 +08:00
GOPATH 的包是装在全局的,有什么用? npm -g 有啥用,GOPATH 就有啥用啊…
morize
2020-08-10 15:54:21 +08:00
@tairan2006 只用 GOPATH 就是把所有包 npm -g 安装了, 而且还没有依赖管理。相比之下 npm 的依赖管理设计和项目组织都比 Go Module 都好太多了,更不用说 GOPATH 了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696781

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX