前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 1.18 workspace 使用初体验

Go 1.18 workspace 使用初体验

作者头像
haohongfan
发布2022-04-01 10:20:05
6.8K0
发布2022-04-01 10:20:05
举报
文章被收录于专栏:HHFCodeRvHHFCodeRv

hi,大家好,我是好久没有更新的 haohongfan。

Go 1.18 终于正式发布了,本次版本更新中 Go mod 有个很实用的功能 “multi-module workspaces”. 本篇文章简单介绍下 workspace 的使用方式以及使用场景。

更新 go 1.18 版本,推荐使用 goup[1],做多版本管理很方便。

Go work 使用方式

1. 创建一个工作空间

代码语言:javascript
复制
mkdir workspace
cd  workspace

2. 初始化一个项目

代码语言:javascript
复制
mkdir hello_work
cd hello_work
go mod init example.com/hello_work

output:go: creating new go.mod: module example.com/hello_work

接着执行:go get github.com/georgehao/gomodtestc

在 workspace/hello_work 文件夹下,创建 hello_work.go

代码语言:javascript
复制
package main

import (
    "fmt"

    "github.com/georgehao/gomodtestc"
)

func main() {
    fmt.Println(gomodtestc.PrintStr("Hello", 100))
}

output:

代码语言:javascript
复制
go run example.com/hello_work

project C Hello_100

3. 本地更改依赖包做测试

因为需求的变更,依赖的 gomodtestc 的功能更改了,但是不确定更改的是否正常,我们需要用 hello_work 项目来测试。

比如:git clone git@github.com:georgehao/gomodtestc.git, gomodtestc 的更改如下,

代码语言:javascript
复制
package gomodtestc

import "fmt"

func PrintStr(str string, num int) string {
 return fmt.Sprintf("project C %s_%d", str, num)
}

// TestWork 新增功能。。。
func TestWork()  string {
 return "hello workespace"
}

如何使用 hello_work 项目来测试呢?

在没有 go1.18 之前,只能使用 replace,如下:

代码语言:javascript
复制
module example.com/hello_work

go 1.17

require github.com/georgehao/gomodtestc v1.0.1

replace (
 github.com/georgehao/gomodtestc =>  "/Users/haohongfan1/project/workspace/gomodtestc"
)

这样做程序能正常测试,但是带来一个问题,我们要修改 go.mod,一不留神这个 replace 过的 go.mod 就上传到 gitlab 去了。实在很烦。

福音来了,go workspaces 真的好爽。(读者朋友们,如果上面跟着做了replace操作,go.mod记得要恢复原状)

代码语言:javascript
复制
cd workspace
go work init ./hello_work

会在 workspace 下生成一个 go.work文件

代码语言:javascript
复制
go 1.18

use ./hello_work

这个时候,我们把 gomodtestc 项目移动到 workspace 目录下,然后执行:

代码语言:javascript
复制
go work use ./gomodtestc

go.work的更改如下:

代码语言:javascript
复制
go 1.18

use (
 ./gomodtestc
 ./hello_work
)

然后执行:go run example.com/hello output:

代码语言:javascript
复制
project C Hello_100
hello workespace

使用 go work,我们不需要对 hello_work 项目的 go.mod 做任何操作就能正常测试项目的修改。真的非常方便。

Go work 使用场景及注意点

使用场景

  • 本地调试。

比如,公司内部开发时,一般都会沉淀出一个 common 的组件项目,这个组件项目可能会有很多人修改,这个项目修改后本地测试,使用 go work 会很方便快捷。

注意点

  • 测试的项目和被测试项目必须位于同一个文件夹下。如本文中的 hello_work 与 gomodtestc 必须都在 workspace 文件夹下
  • go.work 不需要提交

关于 go work 可以看官方文档

  • go blog[2]
  • go ref[3]

参考资料

[1]goup: github.com/owenthereal/goup

[2]go blog: https://go.dev/doc/tutorial/workspaces

[3]go ref: https://go.dev/ref/mod#workspaces

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HHFCodeRv 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Go work 使用方式
    • 1. 创建一个工作空间
      • 2. 初始化一个项目
        • 3. 本地更改依赖包做测试
        • Go work 使用场景及注意点
          • 使用场景
            • 注意点
              • 参考资料
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档