这两天开始自学 Go,装的 1.14.6 版本。看教程的时候看到官方推荐使用 Go Module 进行依赖管理,于是设置了 export GO111MODULE=on,项目文件可以不用放在 GOPATH/src 下,依赖也不会出现在 GOPATH/pkg 下。但是这样操作之后,GOPATH 还有什么作用?还有 Goland 设置里面的 Global GOPATH 和 Project GOPATH 的作用,看了官网的解释以后还不是很明白。
1
CEBBCAT Aug 9, 2020 我也搞不太明白 GOPATH 之类的,但是好像 Go Module 的原文件都被放在了${GOPATH}/pkg/mod 下了
|
2
lrh3321 Aug 9, 2020 via Android
感觉是,${GOPATH}/pkg/mod 下面缓存了一堆包的 git 裸仓库,根据 go.mod 文件再 checkout 出对应版本的包缓存在里面,编译的时候自动使用对应的版本
|
3
sadfQED2 Aug 9, 2020 via Android
使用 go mod 后就能用了呀
|
5
morize OP 感谢楼上三位的回复,晚上继续研究了一下 Go Module,确实如楼上几位所说。但上手觉得有点不友好,引用本地的 package 还得先 require 再 replace 成本地路径,无疑增加了学习成本。如果用 GOPATH 的模式,又得跳出当前的项目范围去 ${GOPATH}/src 下修改,也是不方便。
这一通折腾的感想就是刚开始学习不要碰 Go Module,徒增烦恼,老老实实把项目放在 ${GOPATH}/src 下,等有依赖管理的需求再去搞 Go Module 。 |
6
keenkiller Aug 10, 2020
GOPATH 的包是装在全局的,有什么用? npm -g 有啥用,GOPATH 就有啥用啊…
|
7
morize OP @tairan2006 只用 GOPATH 就是把所有包 npm -g 安装了, 而且还没有依赖管理。相比之下 npm 的依赖管理设计和项目组织都比 Go Module 都好太多了,更不用说 GOPATH 了。
|