• 初始化
      • 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 可以使用指定版本,可以指定老版本
    • 添加对新主要版本的依赖
      1. "rsc.io/quote"
      2. quoteV3 "rsc.io/quote/v3" //quoteV3是重命名
      module的每个不同的主要版本,将使用不同的module路径,从V2开始,路径必须以主要版本作为结束,对于不兼容的包(主要版本不同的包),将有不同的名称。理论上,1.6应该向后兼容1.5,不过在go官网的例子中,1.99不兼容1.3,这也是可以发生的,需要注意

    此外,go在引入的mod的时候,每个主要版本最多可以引入一个。这个对于升级mod的版本是非常方便的,因为你可以同时引入两个主要版本,可以同时使用新旧版本的内容

    • 将依赖项升级主要版本
      • 可以使用go doc查看更新文档
      • 尽管将quote移除,保留了quoteV3,但go.mod中仍然有quote,可以使用go mod tidy命令,对没有使用的mod进行移除