报错
报错提示1:
package coin is not in GOROOT
package coin is not in GOROOT (D:\GoLand\goland_sdk\go1.18.6\src\coin)
这种情况是只搜索 GOROOT 环境,而不搜索 GOPATH 路径
报错提示2
cannot find package "xxx" in any of
cannot find package "coin" in any of: D:\GoLand\goland_sdk\go1.18.6\src\coin
解决方案:
1. 添加项目路径到 “项目GOPATH”
2. 取消勾选启用Go模块集成
如果 goland 使用 go mod,import 自己写的包时,会下划线报错找不到包
我们要用的是 GOPATH 下 src 下的包,就要取消勾选启用Go模块集成
3. 设置 GO111MODULE
GO111MODULE 有三个值:off, on 和 auto(默认值)
GO111MODULE=off
,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。GO111MODULE=on
,go命令行会使用modules,而一点也不会去GOPATH目录下查找。依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的 moduleGO111MODULE=auto
,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:- 当前目录在 GOPATH/src 之外且该目录包含 go.mod 文件
- 当前文件在包含 go.mod 文件的目录下面。
用 GOPATH 模式引入包从 src 目录下开始引入,需要
go env -w GO111MODULE=off
此时会在 GOPATH 路径下进行搜索,不使用 go mod
FAQ:
你自己的写的包必须在$GOPATH/src 下
在包中定义的函数首字母必须大写(外部可调用)
4. 添加本项目路径到 GOPATH 环境变量(1-3步都做了还不行的情况)
把本项目的路径添加到 GOPATH 环境变量 中