go mod使用
简介
最近工作中大量接触go语言,同时也在使用go开发一些项目。之前主要是写python,在接触go后发现go的包管理并不像python或者java那么方便,在go1.11之前是go path这种方式对于国内的用户经常发现包下载失败,go1.11之后引入了go mod的概念,并且目前也越来越完善,下面简单记录下go mod的日常使用
module是一个相关Go包的集合,它是源代码更替和版本控制的单元。模块由源文件形成的go.mod文件的根目录定义,包含go.mod文件的目录也被称为模块根。moudles取代旧的的基于GOPATH方法来指定在工程中使用哪些源文件或导入包。模块路径是导入包的路径前缀,go.mod文件定义模块路径,并且列出了在项目构建过程中使用的特定版本
开启go mod和配置国内镜像
- GO111MODULE 默认值auto,当在go path目录下该值为off,也就是使用go path方式,所以这里我们手动设置一下为on
- GOPROXY 配置国内镜像,便于国内用户下载包
|
|
Go mod 的使用
在开启Go mod 模式下,当新建项目时需要初始化项目
|
|
项目中会生成go.mod 文件
|
|
go.mod 文件中用到的关键字有三个
- require:引用哪些包
- replace:替换一些包的下载和引用路径
- exclude:不下载和引用哪些包
go mod常用命令
命令 | 说明 |
---|---|
download | download modules to local cache(下载依赖包) |
edit | edit go.mod from tools or scripts(编辑go.mod) |
graph | print module requirement graph (打印模块依赖图) |
verify | initialize new module in current directory(在当前目录初始化mod) |
tidy | add missing and remove unused modules(拉取缺少的模块,移除不用的模块) |
vendor | make vendored copy of dependencies(将依赖复制到vendor下) |
verify | verify dependencies have expected content (验证依赖是否正确) |
why | explain why packages or modules are needed(解释为什么需要依赖) |