GOPATH
$GOPATH/pkg 目录下会有一个文件夹(文件名根据操作系统的不同而有所不同,例如在 Mac 操作系统下为 darwin_amd64)存储预编译的 obj 文件,以加快程序的后续编译。大多数开发人员不需要访问此目录。我们在后面还会看到,pkg 下的 mod 文件会存储 Go Modules 的依赖。
Go Modules的依赖管理
能不能让 Go 工程代码脱离 GOPATH?
能否处理版本依赖问题并且自动选择最兼容的依赖版本?
能否在本地管理依赖项,自定义依赖项?
Go Modules 巧妙解决了上面这些问题。
Go 官方的 Go Modules 提供了一种可以在文件中同时维护直接和间接依赖项的集成解决方案。一个特定版本的依赖项也被叫做一个模块(moudle),一个模块是一系列指定版本的 package 的集合。
Go Modules 实践
Go Modules 最小版本选择原理
Go 最小版本选择指的是,在选择依赖的版本时,优先选择项目中最合适的最低版本。当然,并不是说 MVS 不能选择最新的版本,而是说如果项目中任何依赖都用不到最新的版本,那么我们本质上不需要它。