- 初始化
go mod init modname/subname
- go.mod
- 这个文件仅在module的根目录中,子目录中的pkg拥有的导入路径为modulePath+子目录path,即不需要再go mod init了
- go.mod与go.sum都应加入版本控制
- 添加依赖项
- import的会自动导入,go.mod会记录被直接依赖的,go.sum中会记录全部依赖的module
- 可能需要代理,修改GOPROXY即可
- 升级依赖项(不升级主要版本)
- 使用
go get
对依赖进行升级 - 使用
go get rsc.io/sampler@v1.3.1
可以使用指定版本,可以指定老版本
- 使用
- 添加对新主要版本的依赖
module的每个不同的主要版本,将使用不同的module路径,从V2开始,路径必须以主要版本作为结束,对于不兼容的包(主要版本不同的包),将有不同的名称。理论上,1.6应该向后兼容1.5,不过在go官网的例子中,1.99不兼容1.3,这也是可以发生的,需要注意"rsc.io/quote"
quoteV3 "rsc.io/quote/v3" //quoteV3是重命名
此外,go在引入的mod的时候,每个主要版本最多可以引入一个。这个对于升级mod的版本是非常方便的,因为你可以同时引入两个主要版本,可以同时使用新旧版本的内容
- 将依赖项升级主要版本
- 可以使用go doc查看更新文档
- 尽管将quote移除,保留了quoteV3,但go.mod中仍然有quote,可以使用go mod tidy命令,对没有使用的mod进行移除