why ? 为什么需要workspace
- 历史发展和版本依赖的管理
GOPATH 最开始的模式
- 开发者需要设置一个环境变量 GOPATH,用于指定项目的工作空间。GOPATH 是一个目录路径,其中包括了三个重要的子目录:src、bin 和 pkg
- 通过 go get 命令,GOPATH/src 下的相应目录中
- 缺点 :
- 必须指定GOPATH 目录
- 全部项目必须全局共享一个依赖目录
- 如何出现两个项目依赖的用一个库的版本不同 出现冲突切无法处理
改进的版本 Go Modules
- Go Modules 是从 Go 1.11 版本开始引入
- 没有必须指定GOPATH 目录
- 每个新项目都有自己的依赖有效的处理版本冲突
- 甚至引入 go mod vendor 离线构建和更精确地控制依赖版本
- 缺点 :
- 如何多个Modules之间项目依赖 使用 repace 替换
最终的 workspace mode Go1.18
- 在Modules上面构建一层通用管理层 go.wrok
- 使用 use 关键词 引入 Modules