问题
安装完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

本文介绍了在安装Go环境后遇到的'package is not in GOROOT'错误,该问题源于Go的两种包管理方式:GOPATH和GO111MODULE。当使用GO111MODULE=off时,编译器会在GOPATH下查找包。为了解决这个问题,可以将GO111MODULE设置为off,确保编译器在正确的路径下寻找依赖。同时,文章讨论了gomod和gopath模式的区别,以及在不同模式下查找包的逻辑。
236

被折叠的 条评论
为什么被折叠?



