环境
OS: Darwin Kernel Version 21.4.0
GO: go version go1.18 darwin/arm64
背景
Go1.18 最 “实用“ 的功能,应该是 Go 工作区模式,它使得开发者在多个模块中的开发工作变得更加简单。
使用
在同一个目录下创建两个空的 go 包 demo 和 util。
1 | mkdir -p workspace_mode_example/{demo,util} |
然后分别使用 go mod init 来初始化。
1 | cd workspace_mode_example/demo |
将 go.mod 里的 go 版本改为 go 1.18,并将所有的依赖删除。
1 | # cat demo/go.mod |
并在 demo 中写入 main.go,在 util 写入 util.go,内容如下:
1 | # cat demo/main.go |
执行命令创建创建工作区文件 go.work。
1 | # go work init ./util ./demo |
创建的 go.work 文件如下所示:
1 | # cat go.work |
然后无论我在哪个目录下,只要所在位置的父级目录有 go.work 文件,即处于该工作区内,go 的编译器都会自动引用本地的 util 包。
1 | # cd demo |
总结
使用工作区模式,将使整个开发流程更加流畅,个人认为这可能是 go1.18 最为实用的功能,强烈推荐大家使用起来~
另外 go.work 文件是工作区的标志,该文件不需要上传至 github,只用于本地开发测试使用。
引用
Go-dev/tutorial/workspaces
掌握 Go 工作区模式
以上。