问题
安装完go环境,配置好GOROOT和GOPATH后。写个代码,报错package code/pkg/myMath is not in GOROOT
,编译器没有去gopath下找包。
诸如 package **** is not in GOROOT
这样的问题,是因为安装完GO环境后,默认情况下GO111MODULE=""
GO环境下有gomod 和 gopath 两个包管理方案,并且相互不兼容,
- 在 gopath 查找包,按照 goroot 和多 gopath 目录下 src/xxx 依次查找。
- 在 gomod 下查找包,解析 go.mod 文件查找包,mod 包名就是包的前缀,里面的目录就后续路径了。在 gomod 模式下,查找包就不会去 gopath 查找,只是 gomod 包缓存在 gopath/pkg/mod 里面。
解决办法
// 把GO111MODULE置为off就行了
go env -w GO111MODULE=off