Go 1.17版本是否需要创建$GOPATH下的src目录?
问题原因说明
这是你参考的文档过时导致的,属于Go版本迭代后依赖管理机制调整的正常表现,具体逻辑如下:
- Go 1.11版本之前,官方没有内置的版本依赖管理工具,默认使用GOPATH模式,此时
go get拉取的依赖源码确实会存储在$GOPATH/src目录下,编译后的静态库存放在$GOPATH/pkg对应架构目录,安装的可执行文件存放在$GOPATH/bin,和你查阅的旧文档描述一致。 - Go 1.11版本正式推出Go modules作为官方依赖管理方案,到Go 1.16版本后Go modules已经是默认开启的状态,不再要求开发者必须将项目放在
$GOPATH/src目录下开发。该模式下go get拉取的依赖会按版本号分类,缓存到$GOPATH/pkg/mod目录下,支持同一个依赖的多个版本共存,解决了旧GOPATH模式下依赖版本冲突的问题,你现在看到的存储路径就是Go modules模式的标准缓存路径。 - 如果强制需要使用旧的GOPATH模式,可以手动设置环境变量
GO111MODULE=off,但该模式已经被官方废弃,目前整个Go生态已经全面适配Go modules,不建议再使用旧模式开发,学习时优先选择发布时间在近3年的Go相关文档即可。
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

