环境问题
1.go test: can’t load package: package … is not in GOROOT
GO111MODULE
配置不当导致的问题。
首先我们了解下GO111MODULE
产生的背景
首先,让我们谈谈 GOPATH。当 Go 在 2009 年首次推出时,它并没有随包管理器一起提供。取而代之的是 go get,通过使用它们的导入路径来获取所有源并将其存储在 $ GOPATH / src 中。没有版本控制并且『master』分支表示该软件包的稳定版本。
Go 1.11 引入了 Go 模块 (以前称为 vgo- 版本为 Go)。 Go Modules 不使用 GOPATH 存储每个软件包的单个 git checkout,而是存储带有 go.mod 标记版本的标记版本,并跟踪每个软件包的版本。
GO111MODULE
是一个环境变量,通过它来控制『GOPATH 行为』与『Go Modules 行为』
GO111MODULE = on
,强制使用Go模块,需要go.mod
正常工作(即使处于GOPATH下)。GO111MODULE = off
,强制使用GOPATH
,从$GOPATH/src
下获取所有源- 在 Go 1.13 下, GO111MODULE 的默认行为 (auto) 改变了:
- 当存在
go.mod
文件时或处于GOPATH
外, 其行为均会等同于于GO111MODULE=on
。这意味着在 Go 1.13 下你可以将所有的代码仓库均存储在 GOPATH 下。 - 当处于 GOPATH 内且没有
go.mod
文件存在时其行为会等同于GO111MODULE=off
。
- 当存在