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

posted on 2022-11-10 22:45  荣锋亮  阅读(544)  评论(0编辑  收藏  举报

导航