Go语言中使用工作区模式解决私有包不方便调试的问题
2024-01-07 17:49:04
工作区模式
1 )概述
- 导入内部开发包,之前有两种处理方式
- 一种是使用Go Modules的
replace
语句,将远程包替换成本地包的路径- 这种注意,在开发完成之后还需将replace去掉再提交到仓库
- 如果有多个这种内部包,这种操作还是很麻烦的
- 另一种方式是将包上传到git平台,再使用 Go Modules 来处理依赖问题
- 这种也是一样,只有提交到远程仓库,才能调试,不适合开发环境
- 一种是使用Go Modules的
- 现在有一种,不需要使用上述方式来简便调试内部私有包
- 这种是 工作区模式,即 (go 1.8 版本之后的模式)
- 这种跟 Go Path 时代的 workspace 不同的是
- 它可以支持本地多个 Go Modules 的开发
2 )演示
目录结构如下
-
workspace
- pkg/
- go.mod
- pkg.go
- project/
- go.mod
- main.go
- pkg/
-
比如,这里 pkg 包的go.mod中声明该包属于 gitlab 平台的,例如:
module gitlab.com/xxx/pkg
-
实际上,并没有在我们的gitlab平台上创建这样一个仓库,这个时候,我们拉取这个包,是拉取不到的
- $
go mod tidy
是找不到这样一个包的
- $
-
现在不通过上传这个包的情况下,在project项目中,使用这个包内的属性或方法
-
在 workspace 目录下初始化一个工作区 $
go work init pkg project
- 如果有多个工程或包的目录都可以在上面命令中继续添加
-
之后,在当前目录下,为我们生成一个 go.work 的文件, 内容如下
go 1.20 use( ./gkg1 ./project )
-
使用这种方式,不用关心私有包是否上传到远程仓库,即可互相调用
-
在开发私有包的时候,就可以使用这个 workspace 目录在本地开发完之后
-
将我们这些包及工程代码分别提交到远程仓库
-
在实际项目中,多个模块之间,可能还存在其他的依赖
-
可以在 gowork 所在的目录,也就是我们这个 workspace目录
-
执行一个 $
go work sync
这个命令就可以同步工作区下面的工程依赖
文章来源:https://blog.csdn.net/Tyro_java/article/details/135430134
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!