go中使用mod

go从1.11版本后就开始支持Modules了,但在1.13版本后加入了GOPROXY后才把go mod在国内带上了巅峰。

GO111MODULE 开关

GO111MODULE 有三个值:off, on和auto(默认值)。

  • GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
  • GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
  • GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
    1) 当前目录在GOPATH/src之外且该目录包含go.mod文件
    2) 当前文件在包含go.mod文件的目录下面。

go mod 命令

命令 说明
down loaddownload modules to local cache(下载依赖包)
edit edit go.mod from tools or scripts(编辑go.mod)
graph print module requirement graph (打印模块依赖图)
init 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(解释为什么需要依赖)

设置代理

在终端输入下面语句就可以了

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.io

也可以把GOPROXY配置成环境变量。
除了goproxy.io之外,还有几个比较快的:

项目中使用

进入项目目录中,使用go mod init就可以创建一个新的go.mod了

执行 go rungo build时,如果项目中有go.mod或GO111MODULE=on,则会自动查找依赖自动下载。

使用go mod tidy来拉取缺少的模块,移除不用的模块

go get 升级

  • 运行 go get -u 将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
  • 运行 go get -u=patch 将会升级到最新的修订版本
  • 运行 go get package@version 将会升级到指定的版本号version
  • 运行go get如果有版本的更改,那么go.mod文件也会更改

本文参考:https://juejin.cn/post/6844903798658301960

0%