go get: installing executables with 'go get' in module mode is deprecated.
To adjust and download dependencies of the current module, use 'go get -d'.
To install using requirements of the current module, use 'go install'.
To install ignoring the current module, use 'go install' with a version,
like 'go install example.com/cmd@latest'.
For more information, see https://golang.org/doc/go-get-install-deprecation
or run 'go help get' or 'go help install'.
这段警告信息说明,使用go get命令在模块模式下安装可执行文件的做法已被弃用。替代的做法分为几个方向:
- 使用
go get -d调整和下载当前模块的依赖项,但不安装。 - 使用
go install在当前模块的上下文中安装程序。 - 使用
go install搭配版本号在忽略当前模块的情况下安装程序,如go install example.com/cmd@latest。
背后的原因
这一变更背后的主要原因是为了清晰地区分获取依赖项和安装可执行程序两个操作。在旧版本中,go get同时承担了下载依赖和安装工具的职责,这在某些情况下会导致依赖管理上的混乱。特别是在开启模块模式(Go Modules)的项目中,go get的行为更加复杂,容易造成版本依赖上的误操作。Go社区通过这一变更,旨在鼓励开发者更加明确地管理依赖项和安装工具,提高开发效率和项目的可维护性。
对开发者的影响
- 依赖管理和工具安装的明确区分:开发者需要适应使用
go install来安装工具,而使用go get -d来仅下载依赖项的新流程。 - 更清晰的版本管理:通过在
go install命令中指定版本,可以更清楚地管理项目所依赖工具的版本,避免潜在的版本冲突问题。 - 需要更新文档和CI/CD脚本:项目的文档、CI/CD配置及其他自动化脚本可能需要更新,以适配新的命令用法。
结论
Go 1.17中go get命令的变更是Go社区在模块化管理方面的又一大步。它旨在提高项目管理的清晰度和效率,虽然这需要开发者做出一定的调整,但长远看来,这是向着更加稳健和可维护的项目结构迈进的一步。开发者可以通过官方文档深入了解这一变更,并按照最佳实践更新自己的开发习惯。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新