Go work 和 Go mod 使用机制给我带来的困扰

今日在学习 gRPC 时遇到的一个问题,在启用了 go.mod 且 go env 输出 GO111MODULE="on" 的项目目录下,在编写自定义的 package 时,始终遇到了

no required module provides package

这样的错误。开始以为是 go.mod 文件的内容或是 go.mod 文件配置的位置不对。一番 debug 之后,发现是在先前的学习中,使用的是 go 1.18 版本,且开启了 go work 的模式,于是,在原先配置过的 $GOPATH/go.work 文件中,新增当前项目目录路径即可。具体的示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ pwd # 查看当前目录

$ path_to_your_go_project # 你的某个 Go 项目目录

$ go mod init # 初始化 Go module

$ go work use . # 添加当前项目路径到 $GOPATH/go.work 文件中

$ 开始你的 Go 项目之旅

最后,附上官方的一篇介绍博客:

Get familiar with workspaces