工作区模式
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.20use(./gkg1./project )
-  使用这种方式,不用关心私有包是否上传到远程仓库,即可互相调用 
-  在开发私有包的时候,就可以使用这个 workspace 目录在本地开发完之后 
-  将我们这些包及工程代码分别提交到远程仓库 
-  在实际项目中,多个模块之间,可能还存在其他的依赖 
-  可以在 gowork 所在的目录,也就是我们这个 workspace目录 
-  执行一个 $ go work sync这个命令就可以同步工作区下面的工程依赖