Go mod 入门
一、why use go mod
1、go mod出现之前,遇到的问题:
1)、代码开发必须在 $GOPATH 的src目录下,在别处新建项目将无法编译运行。
2)、对于项目中需要引入的包,必须手动下载,手动维护。
3)、依赖包没有版本号,对于进行过Java开发并使用过maven的开发人员将会感到十分不适。
2、go mod 是如何解决的?
在golang 1.11以后,go开始支持go mod。go mod 引入了模块的概念,模块是相关Go包的集合。modules是源代码交换和版本控制的单元。
go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
二、使用步骤
1、确认go版本至少为1.11
golang 版本查看命令:
go version
2、配置go mod
go配置命令:
# 开启go mod
go env -w GO111MODULE=on
# 设置代理
go env -w GOPROXY=https://goproxy.cn
关于 GO111MODULE值的解释:
GO111MODULE 有三个值:off, on和auto(默认值)。
GO111MODULE=off : go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on : go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto : 默认值,go命令行将会根据当前目录来决定是否启用module功能。
当modules功能启用时,依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的 module
3、go mod 命令解释
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(解释为什么需要依赖) |
比较常用的是 init
,tidy
, edit
使用示例:
go mod tidy
三、使用示例
1、初始化
#在任意目录下创建项目文件夹
mkdir go-mod-demo
#进入文件夹
cd go-mod-demo
#执行go mod 初始化命令
go mod init
2、引入依赖
1)、在import关键字后声明需要的包,执行go mod命令:
go mod tidy