环境
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 工作区模式
以上。