刚刚接触了Go,在网上学习Go的教程时遇到了问题:
文中描述配置GOPATH环境变量,并在该文件下创建三个子目录:
1.src存放源码
2.pkg编译后生成的文件
3.bin编译后生成的可执行文件
按照步骤完成了上述配置和目录的创建,并在src目录下创建自己的应用包目录,在应用包目录下写入自己需要的go方法,之后在应用包目录下使用“ go install ”命令或任意目录下使用“ go install 包名 ”进行安装,此时出现问题。
问题描述
使用“go install”命令的执行结果如下:
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
使用“go install 包名”方式安装的执行结果如下:
go: 'go install' requires a version when current directory is not in a module
Try 'go install mymath@latest' to install the latest version
即Go无法正确找到GOPATH下的应用包
解决方案
问题出现后有尝试使用“go build mymath(包名)”未果,执行结果如下:
package mymath is not in GOROOT (/usr/local/go/src/mymath)
基于此报错,找到了问题的原因和解决方案
1.问题原因:执行“go env”命令可以发现这样一条信息
GO111MODULE=""
问题关键就在于此,在此项值可为“on、off、auto(空)”,当此项为“on”或空时,会开启模块支持,在此场景下将会忽略 GOPATH配置
2.解决方案:执行“ go env -w GO111MODULE="off" ”命令
修改完配置后再次尝试“go install”,无输出信息,进入“$GOPATH/pkg/linux_amd64/”目录下发现产生了对应的 .a文件,至此问题解决。