go workspace 试用
golang workspace 提供了类似单体仓库管理模块的能力,类似npm 的yarn workspace 或者lerna ,当然npm 也提供了类似的能力,maven,gradle 都可以提供类似的
能力
参考使用
- 项目结构
├── cli
│ ├── go.mod
│ └── main.go
├── go.work
└── userlogin
├── appconfg.go
└── go.mod
- 简单说明
cli 模块使用了userlogin 模块
go.work 定义了workspace
内容如下
go 1.19
use (
./cli
./userlogin
)
appconfg.go
package userlogin
type UserLoginConf struct {
Name string
Age int
Version string
}
main.go
package main
import (
"fmt"
"github.com/rongfengliang/userlogin"
)
func main() {
conf := userlogin.UserLoginConf{
Name: "dalong",
Age: 333,
}
fmt.Printf("%v", conf)
}
- 运行
go run cli/main.go
- 效果
使用场景
进行版本测试,单体仓库管理(项目模块比较多的场景), 还有一种场景就是我们希望修复别人的模块(可以先clone,然后使用workspace 模式使用,进行测试修改)
kustomize 就使用worksapce,是一个比较有用的新特性,注意需要golang 1.18+ 版本
参考资料
参考资料
https://go.dev/doc/tutorial/workspaces
https://github.com/golang/tools/blob/master/gopls/doc/workspace.md
https://github.com/rongfengliang/golang-workspace-learning