Go中相关的环境变量

863 阅读3分钟

Go中相关的环境变量

go中涉及到的一些环境变量, go中涉及到的环境变量以及各自的作用

查看go中设置了有哪些变量

go env 可以看到所有与go相关的环境变量

其中最主要的有以下:

GO111MODULE="on"
GOBIN="/Users/xxx/go/bin"
GOMODCACHE="/Users/xxx/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOPATH="/Users/xxx/go"
GOPRIVATE=""
GOPROXY=""
GOSUMDB="off"

现在我们可以一一说明一下这几个环境变量各自的含义:

GO111MODULE 变量

GO111MODULE这个变量有3个值可以设置,分别是on, off, auto, 分别代表我们build构建程序的时候,使用的是 go module模式进行构建还是早期的非go module模式, 当GO111MODULE=off的时候,这就要求我们的程序必须放在我们的GOPATH目录下。

GOPATH

GOPATH是go的工作目录,我们可以自己指定,在go 1.11之前,所有的go项目都必须放在GOPATH目录下面,目录的基本规范都是GOPATH/src/github.com/xxx-project, go很多的开源包都是放在github上面,基于GOPATH这样的规范,我们不仅可以方便的加载一些公共的包,当我们自己想把自己写的开源的包给别人引入使用的时候,基于 这样的规范,别人也可以很方便的引入

GOBIN

这是在你执行go install github.com/xxx/xxx-project这样的安装第三方库的时候,第三方库默认安装的位置。我们一般会将GOBIN目录添加到环境PATH中去,这样 我们就可以直接在命令行中使用安装的第三方库的命令

GOPROXY

这是我们在go开发中比较重要的一个环境变量,因为众所周知的原因,我们无法直接访问go的首页golang.org, 这也导致,我们无法直接下载golang.org官方的一些 依赖包,所以有了GOPROXY这样一个环境变量,GOPROXY的默认值是proxy.golang.org,我们无法访问,所以可以设置GOPROXY=https://goproxy.cn,direct, 注意 GOPROXY可以设置多个,中间用逗号隔开,像前面其实就是设置了2个GOPROXY,第一个是https://goproxy.cn,第二个direct表示的是直接回源地址拉取,当goproxy.cn 拉取不到时,会直接回源到源地址拉取

GOSUMDB

这个变量是设置对go依赖包进行校验的地址,用以确认你下载的包是没有经过篡改的

GOPRIVATE,GONOSUMDB,GONOPROXY

当我们有写私有的仓库,例如,自己写的公共组件,但是放在公司内网仓库上,例如gitlab.xxx.com上时,不需要经过代理拉取,也不需要check sumdb时候,就可以通过 设置GOPRIVATE这个变量来忽略GOPROXY的设置。例如: GOPRIVATE=*.xxx.cn那么所有xxx.cn这个域名的包都不再经过goproxy 当我们设置了GOPRIVATE时候,go会自动同时帮你设置GONOSUMDB和GONOPROXY, 也就是说GOPRIVATE的值将作为GONOPROXY和GONOSUMDB的默认值, 当然我们也可以单独设置 GONOPROXY和GONOSUMDB的值

GOMODCACHE

这个变量是默认的当我们启用go module时候,我们当前电脑下载的所有的依赖都会缓存在这个目录下,方便你不需要每次构建都再去拉取一次相关的包, 当然我们可以使用 go clean -modcache 这样的命令去清除所有的缓存,不过这个命令慎用,因为清楚缓存后,如果你项目依赖了太多的包,下载需要一段时间。有时候我们往往会遇到 有写开源的作者,对源代码进行了修改,但是版本号没有升级,导致代码的不兼容,而我们本地又缓存了代码,这时候就可以通过清除缓存来解决这个问题。