0

Go: 多模块工作区 go work

 1 year ago
source link: https://lianpf.github.io/posts/%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91/10.golang-work/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

go 使用多模块工作区,让开发者可同时处理多个模块的…


一、使用go work

go 使用多模块工作区,让开发者可同时处理多个模块的开发。在Go 1.17之前,只能使用go.mod replace指令实现,虽然支持同时进行多个模块的开发,但使用它可能是很痛苦的。每次当你想要提交代码时,都不得不删除掉 go.mod中的replace才能使模块稳定的发布。

go 1.18后,官方提供了多模块工作区功能,即go work

1. 使用条件

  • 需要go 1.18或更高版本
# 查看 go 版本
$ go version
go version go1.18 darwin/amd64

2.go work支持命令

  • 通常情况下,建议不要提交go.work文件到git 上,它主要用于本地代码开发
  • 生成go.work文件:推荐在$GOPATH路径下执行
    • 注意:若你的开发空间不在$GOPATH下,则在你的实际workspace根目录下执行初始化

init工作区文件:

# 查看我的 GOPATH
$ go env | grep GOPATH
GOPATH="/Users/xxx/go"

# 查看我的某个 workspace 
go $ pwd
/Users/xxx/gitHub/lian/go

go $ go work init # 初始化,生成 go.work工作区文件
go $ tree
workspace文件初始化结构

【黄色】标识go-gin-web是在go这个当前workspace下的一个项目,同级的还有另外一个项目go-grammar

【红色】标识内的go.workgo.work.sum是我们init后,写入的初始化工作区文件。二者在workspace根目录,与go-gin-web同级。

  • 添加新的模块到工作区:go work use
$ go work use ./example # 添加一个模块到工作区
$ go work use ./example ./example1 # 添加多个模块到工作区
$ go work use -r ./example # 递归 ./example 目录到当前工作区

# 删除命令
$ go work edit -dropuse=./example

# 查看当前工作区文件路径,排查工作区文件是否设置正确
$ go env GOWORK
/Users/xxx/gitHub/lian/go/go.work

3.go.work文件结构

  • go.mod文件结构类似,支持Go版本号、指定工作区和需要替换的仓库
  • 文件结构示例:
go.work文件结构示例

最后, 希望大家早日实现:成为前端高手的伟大梦想!
欢迎交流~

微信公众号

本文版权归原作者曜灵所有!未经允许,严禁转载!对非法转载者, 原作者保留采用法律手段追究的权利!
若需转载,请联系微信公众号:连先生有猫病,可获取作者联系方式!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK