go程序只能放在src文件中才能运行,并且依赖的所有的第三方库都放在设定GOPATH的目录下面,很不方便。
go module是Go1.11版本之后官方推出的版本管理工具。使用go module之后我们可不用将代码放置在src下了,并且可以任意切换第三方库版本。
要启用go module支持首先要设置环境变量GO111MODULE
,通过它可以开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是auto。
GO111MODULE=off
禁用模块支持,编译时会从GOPATH和vendor文件夹中查找包。
GO111MODULE=on
启用模块支持,编译时会忽略GOPATH和vendor文件夹,只根据 go.mod下载依赖。
GO111MODULE=auto
,当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持。
只要将设置GO111MODULE=on之后就可以使用 go module 功能了,以后就没有必要在 GOPATH 中创建项目了,并且还能够很好的管理项目依赖的第三方库信息。
Go1.11
之后设置GOPROXY
命令为:
export GOPROXY=https://goproxy.cn
Go1.13
之后GOPROXY默认值为 https://proxy.golang.org ,但其在国内是无法访问的,所以大多自行设置GOPROXY
,这里我推荐使用goproxy.cn
。
go env -w GOPROXY=https://goproxy.cn,direct
使用 go module 管理依赖后会在项目根目录下生成一个go.mod文件。格式如下,require
后面是引入的第三方库和对应版本号。如想更改版本号,直接修改后执行 go mod download
。
module Project
go 1.14
require github.com/garyburd/redigo v1.6.2 // indirect
go mod download 下载依赖的module到本地(默认为$GOPATH/pkg/mod目录)
go mod edit 编辑go.mod文件
go mod graph 打印模块依赖图
go mod init 初始化当前文件夹, 创建go.mod文件
go mod tidy 增加缺少的module,删除无用的module
go mod vendor 将依赖复制到vendor下
go mod verify 校验依赖
go mod why 解释为什么需要依赖
在项目中执行go get
命令可以下载依赖库,并且还可以指定下载的版本。
set GO111MODULE=on
SET GOPROXY=https://goproxy.cn (这是win环境下的)
export GOPROXY=[https://goproxy.cn](https://goproxy.cn/)
(这是mac环境下的)
go mod init [库名]
// 初始化项目(如果你是初始化项目直接 go mod init
就OK)
在目录文件下会生成 go.mod ,go.mod 里面包含了所需要的第三方库。
可能会出现编译器报错,但却能正常编译的情况
go get
下载第三方库
修改第三方库的版本号直接去go.mod文件修改然后执行 go mod download
原文:https://www.cnblogs.com/newbase/p/13524319.html