GOPATH

go语言学习笔记51 Go Module_Go Module

$GOPATH/pkg 目录下会有一个文件夹(文件名根据操作系统的不同而有所不同,例如在 Mac 操作系统下为 darwin_amd64)存储预编译的 obj 文件,以加快程序的后续编译。大多数开发人员不需要访问此目录。我们在后面还会看到,pkg 下的 mod 文件会存储 Go Modules 的依赖。

go语言学习笔记51 Go Module_Go Module_02

go语言学习笔记51 Go Module_Go Module_03

Go Modules的依赖管理

能不能让 Go 工程代码脱离 GOPATH?

能否处理版本依赖问题并且自动选择最兼容的依赖版本?

能否在本地管理依赖项,自定义依赖项?

Go Modules 巧妙解决了上面这些问题。

go语言学习笔记51 Go Module_Go Module_04

Go 官方的 Go Modules 提供了一种可以在文件中同时维护直接和间接依赖项的集成解决方案。一个特定版本的依赖项也被叫做一个模块(moudle),一个模块是一系列指定版本的 package 的集合。

go语言学习笔记51 Go Module_Go Module_05

Go Modules 实践

go语言学习笔记51 Go Module_Go Module_06

go语言学习笔记51 Go Module_Go Module_07

go语言学习笔记51 Go Module_Go Module_08

go语言学习笔记51 Go Module_Go Module_09

go语言学习笔记51 Go Module_Go Module_10

go语言学习笔记51 Go Module_Go Module_11

go语言学习笔记51 Go Module_Go Module_12

go语言学习笔记51 Go Module_Go Module_13

go语言学习笔记51 Go Module_Go Module_14

go语言学习笔记51 Go Module_Go Module_15

Go Modules 最小版本选择原理

Go 最小版本选择指的是,在选择依赖的版本时,优先选择项目中最合适的最低版本。当然,并不是说 MVS 不能选择最新的版本,而是说如果项目中任何依赖都用不到最新的版本,那么我们本质上不需要它。

go语言学习笔记51 Go Module_Go Module_16