Go Modules 的使用理解

GO Modules 是Go 语言的代码以来管理工具,类似于php的composer, 前端中的npm。

新建 go 项目时,需要在项目根目录执行go mod init 初始化生成go.mod

$ go mod init

下载依赖时,需要修改环境变量GOPROXY

go env -w GOPROXY=https://goproxy.cn,direct
//后面的地址为七牛云的仓库
//direct 关键字代表源地址,下载依赖时在代理中请求超时会自动切换到源地址

go env -w 可以快速修改Go相关的环境变量,当然也可以直接修改系统的环境变量,可能需要重启。

执行 go mod init后,项目根目录下会生成两个文件go.modgo.sum
两个文件是下载依赖包的主要依据。go.mod 类似于 PHP 中的 composer.json ,而 go.sum 则是 composer.lock

go.mod 中,如果看到 require 区块里有 // indirect 字样 , 此标志标明这个依赖包还未被使用,如果你在代码的某个地方 import 到的话,VSCode 的 Go 插件就会自动将这个标志去除。

去除无用的依赖

$ go mod tidy

这个命令将会移除未使用的依赖

私有模块

如果项目使用了私有模块,更新项目依赖时可能会引发错误(没试过,猜想的),解决办法:

  • GONOPROXY —— 设置不走 Go Proxy 的 URL 规则
  • GONOPROXY —— 设置不走 Go Proxy 的 URL 规则
  • GOPRIVATE —— 设置私有模块的 URL 规则,会同时设置以上两个变量

因为 GOPRIVATE 会同时设定以上两个,所以一般私有仓库使用 GOPRIVATE 即可

$ go env -w GOPRIVATE="git.example.com,github.com/name/project"

设置后当 go get 时,前缀为 git.example.com 和 github.com/name/project 的模块都会被认为是私有模块。

依赖管理 Go Modules

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!