为了解决 GOPATH 的问题,官方在 1.11 开始推出了 Go Modules 的功能,将第三方库储存在本地的空间,并且给程序去引用。

首先要设定 GO111MODULE 环境变量,总共可以三种不同的值:

  1. auto go 命令会根据当前目录来决定是否启用 modules 功能。 需要满足两种情形:
    1. 该项目目录不在 GOPATH/src/
    2. 当前或上一层目录存在 go.mod
  2. on Go 1.16.6 的默认值,go 命令会使用 modules,而不会 GOPATH 目录下查找。
  3. off go 命令将不会支持 module 功能,寻找套件如以前 GOPATH 的做法去寻找。

官方与实践都推荐采用 Go Modules 的做法,不再使用 GOPATH 的功能了,因此将其设定为 on。

Go Modules 方式下载下来的第三方库位在 GOPATH/pkg/mod 文件夹里面。

参考资料

  1. Golang — GOROOT、GOPATH、Go-Modules-三者的关系介绍 | by 陈冠亿 Kenny | 企鹅也懂编程 | Medium