概述
importGOPATH/srcgo.modgo
go mod文件内容
- module 当前模块名称
- go 版本号
- require 所需第三方库
go mod命令
go mod help
- init:生成go.mod文件
- download:下载go.mod文件中指明的所有依赖
- tidy:整理现有的依赖
- graph:查看现有的依赖结构
- edit:编辑go.mod文件
- vendor:导出项目所有的依赖到vendor目录
- verity:校验一个模块是否被篡改过
- why:查看为什么需要依赖某模块
go mod环境变量
go env
GO111MODULE
go在1.1.1版本后才有moudle模式,因此起名111。
go env -w GO111MODULE=on
- auto:只要项目包含go.mod文件的话启用Go module。Go1.11-1.14的默认值。
- on:启用Go module。目前(1.17)默认值。
- off:禁用Go module。
GOPROXY
主要用于设置模块代理,可以通过设置的网站,快速拉取模块版本。第三方依赖库下载的源地址。
go env -w GOPROXY=https://goproxy.cn,directdirectgo env|grep GOPROXY
注意:设置的镜像地址GOPROXY,同时也会代理GOSUMDB的检查工作,因此可以不用重复设置GOSUMDB。
GOSUMDB
用于在拉取模块版本的时候,保证拉取到的数据未经过篡改。如果发现不一致,即可能发现篡改,将会立即终止。
go env|grep GOSUMDBoff
该值能够被Go模块代理所代理,因此我们可以通过GOPROXY来解决默认值无法直接访问的问题,因此设置GOPROXY后,无需额外设置。
GOPRIVATE
当项目依赖了私有模块,需要设置GOPRIVATE来指明某一个或一类私有模块,GOPRIVATE设置的值会作为GONOPROXY和GONOSUMDB的默认值,这样不会被GOPROXY指定的Go模块代理,也不会被GOSUMDB指定地址检查。
该值可以设置多个,多个间通过英文逗号","分割。也可以使用通配符,设置某一类。
$ go env -w GORIVATE="*.example.com,git.text.com"
初始化项目并使用第三方库
前提:开启了Go Moudules模块
go env|grep GO111MODULEongo env -w GO111MODULE=onexport GO111MODULE=onsource ~/.bashrc
初始化项目
mkdir -p 项目路径/项目名称go mod init 项目路径/项目名称
导入第三方库
go get 第三方库路径require 第三方库路径 版本号//indirect第三方库 版本号 h1:hash第三方库 版本号/go.mod h1:hash
改变模块依赖关系
当我们模块依赖的是A,但我们想修改为B的时候,我们可以改变模块依赖关系
go mod edit -replace=原依赖=替换依赖replace 原依赖 => 替换依赖