1、原因分析:编译器找包的时候只在GOROOT查找,不在GOPATH查找
2、原因进一步分析:
1)模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件,go mod——GO111MODULE
是 golang 1.11 新加的特性
2)
GO111MODULE 有三种状态:
off:
go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
on:
go命令行会使用modules,而一点也不会去GOPATH目录下查找。依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的 module
auto:
默认值,go命令行将会根据当前目录来决定是否启用module功能。
3、解决办法:
GO111MODULE=off