问题:
在go get 之后,package 已经下载在 $GOPATH/pkg/mod 下。但使用 VSCode 写 Go 时仍然出现 can not import find [...] in any of [...] 报错。如下图:
问题产生原因:
在 Go 1.13 之后(module 模式作为默认依赖管理方式后),使用 go get 命令 (示例如下)
go get github.com/go-redis/redis/v8
会将 package 下载到 $GOPATH/pkg/mod 下。
但是为了保持兼容性。在$GOPATH/src 目录下的 module 会使用旧的 GOPATH 模式处理依赖,即前往 GOPATH 或 GOROOT 下查找。
但在 module 模式下,go get 已经不会在 GOPATH/src 目录中下载包。所以出现了上述问题。
解决办法:
只需要将工作目录移出 $GOPATH/src 即可解决
参考:
官方文档: Using Go Modules - go.dev
stackoverflow: Go Modules importing issue in VSCode ("cannot find package [...] in any of [...]") - Stack Overflow