乐趣区

关于javascript:go语言环境变量GOPROXY和GO111MODULE设置

咱们装置完 golang 后,咱们在 windows 的 cmd 命令下就能够间接查看和应用 go 命令和环境变量了,同样的在 linux 下能够在控制台应用, 如下图所示:

C:\Users\lijie1>go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\lijie1\AppData\Local\go-build
set GOENV=C:\Users\lijie1\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=E:\go-project
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=C:\Go\go
set GOSUMDB=off
set GOTMPDIR=
set GOTOOLDIR=C:\Go\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\lijie1\AppData\Local\Temp\go-build491479286=/tmp/go-build -gno-record-gcc-switches

咱们也能够间接输出 go, 查看 go 反对的命令

GO111MODULE

GO111MODULE 是 go modules 性能的开关,对于 go modules 本文不详述,这个波及到 go 的一种很重要的管理机制,前面会有专门的文章来剖析,咱们能够简略的了解为,在没有 go modules 机制时,go 工程中对于第三方性能包的治理非常复杂,也十分业余,这就导致程序员在进行开发的时候,对于第三方性能包的治理很不不便,所以才有了 go modules 机制。这个机制的开关是通过 GO111MODULE 环境变量来配置的。

GO111MODULE=off,无模块反对,go 命令即将不会反对 module 性能,寻找依赖包的形式将会沿用旧版本那种通过 vendor 目录或者 GOPATH 模式来查找。

GO111MODULE=on,模块反对,go 命令行会应用 modules,而一点也不会去 GOPATH 目录下查找。

GO111MODULE=auto,默认值,go 命令即将会依据当前目录来决定是否启用 module 性能。这种状况下能够分为两种情景:

  1. 当前目录在 GOPATH/src 之外且该目录蕴含 go.mod 文件,开启模块反对。
  2. 以后文件在蕴含 go.mod 文件的目录上面。
注:在应用 go modules 时,GOPATH 是无意义的,不过它还是会把下载的依赖存储在 $GOPATH/pkg/mod 中
也会把 go install 的后果放在 $GOPATH/bin 中。当 modules 性能启用时,依赖包的寄存地位变更为 $GOPATH/pkg
容许同一个 package 多个版本并存,且多个我的项目能够共享缓存的 module。

命令设置如下:

go env -w GO111MODULE=on

注:如果前面不须要应用, 能够再将值设置为 off。

GOPROXY

从字面意思就能看出,GOPROXY 示意的是 go 的代理设置,之所以有这个环境变量,是因为 go 这种语言不像 C 语言,在 C 语言中,如果咱们想要应用他人的第三方代码,个别有两种路径:

而在 go 语言中,相似于 java,能够在编程时,引入第三方代码的库地址,比方 git 仓库,而后在编译的时候,IDE 会主动的拉取第三方库文件到以后工程。
这样做尽管很不便,然而带来了一个问题:网速和限度
golang 默认的 GOPROXY 是 https://goproxy.io, 这个是官网的设置,咱们能够应用国内的代理,Windows 下设置如下:,因为一些限度,咱们不能很顺利的应用和下载这些仓库,这样就会导致下载迟缓或者失败,所以这个时候就须要一个 代理 来实现下载,这个代理就是中间商,能够跨过限度来拜访。

golang 默认的 GOPROXY 是https://goproxy.io, 这个是官网的设置,咱们能够应用国内的代理,Windows 下设置如下:

go env -w GOPROXY=https://goproxy.cn,direct

注:其中 -w 示意 写 操作。

官网参考设置代理

具体细节,能够参考 https://goproxy.cn/。

go module 代理设置 Go 1.13 及以上(举荐)

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct

macOS 或 Linux

$ export GO111MODULE=on
$ export GOPROXY=https://goproxy.cn

或者

$ echo "export GO111MODULE=on" >> ~/.profile
$ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
$ source ~/.profile

Windows

关上你的 PowerShell 并执行

C:\> $env:GO111MODULE = "on"
C:\> $env:GOPROXY = "https://goproxy.cn"
退出移动版