ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ### Golang包管理历程 ***** go get -> vender -> go modlues ``` - go get 无版本概念 - vendor 曲线救国,但仍然没有版本变化 - Go1.11 modules 开启了版本依赖新历程 ``` ### GOMODULE1111 ***** 开启module11 ``` set GO111MODULE=on //windows export GO111MODULE=on //linux ``` 通过GO1111MODULE环境变量来开启或者关闭,默认是auto ``` - off/on/auto: 关闭、开启、自动识别 - 使用module后,GOPATH失去了部分意义 - 要用module,第一步将项目从GOPATH中移出去 ``` ### go.mod文件 ***** 主要指令 ``` - module:定义当前模块和包路径 - require:定义依赖的模块和版本 - exclude:排除特定模块和版本的使用 - replace:模块源的替换 ``` go.mod 文件用go mod命令来创建和维护 命令格式: ``` go mod<命令> [可选参数] ``` 8个子命令 ``` √ init, tidy, vendor, verify √ download, edit, graph, why ``` 创建mod文件 ``` go mod init v2 ``` 更新模块 ``` - tidy子命令,更新依赖模块 - 使用go get 命令来下载和更新模块 ``` ### 解决网络访问不了golang.org/x等谷歌的扩展包 ***** replace指令 ``` - 用新的包去替换老的包 - 格式:replace 包路径[版本] => 包路径版本 - golang.org/x/sys => github.com/golang/sys 在go.mod 文件中写入 replace ( golang.org/x/sys => github.com/golang/sys latest ) ``` ### 将项目module化流程 ***** ``` 移动项目到GOPATH工作空间之外 go mod init 创建和初始化go.mod 如果存在不能下载的谷歌库,replace指令替换 go mod tidy 来整理更新已有依赖 go mod verify 来验证module go mod vendor √ 复制依赖到vendor目录,方便源代码定位和查看 ```