概述

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 原依赖 => 替换依赖