快速掌握 Go 工作区模式( 二 )


在引入成功后,我们回到 ./example/hello 目录下的 reverse.go 文件,新增一个用于 Demo 的方法:
...func Hello() string { return "煎鱼,你好!"}再到 hello 项目中,新增调用:
package mainimport ( "fmt" "golang.org/x/example/hello/reverse")func main() { fmt.Println(reverse.String("Hello, 煎鱼")) fmt.Println(reverse.Hello())}输出结果:
鱼煎 ,olleH煎鱼,你好一切正常 。满足不添加 replace 的要求,也使用了 go.work,不用担心把 replace 不小心提交到 Git 仓库中 。
另外 Go 工作区中的项目在进行编译时,也是引用所配置好的工作区内的模块 。而不是单单只针对开发阶段的 go run,也可以在产线上去使用,编译成二进制去应用和部署 。
场景汇总我们已经对 Go 的工作区模式有了一定的了解,其使用场景聚焦在如下:

  • 开发较大的产品,其项目存在着多个互相依赖的模块 。可以直接设置成一个工作区 。
  • 开发第三方库(类似 SDK 库),需要对上游的模块新增新特性 。势必要在本地模块先引用做开发、测试、验证 。也可以直接使用工作区 。
总结今天我们快速了解了 Go 工作区模式(workspace mode)的背景、使用、场景 。这对于解决项目中多模块依赖有着一定的作用 , 可以不再需要去 go.mod 里 replace,算是给了一个规范化的解决方案 。
但在实际应用中,我们会发现工作区模式的便利度,其实不太高 。可能依赖模块数量少时,还不如 replace 一把梭来得快 。
另外目前阶段的使用宣传还是做得比较弱的,前两天问了一圈,还真有一些同学不知道,也没有用过的 。

【快速掌握 Go 工作区模式】


推荐阅读