golang:环境变量GOPROXY和GO111MODULE设置

本文详细介绍了Golang在Windows和Linux环境下如何配置环境变量,并重点解释了GO111MODULE和GOPROXY的作用及设置方法。

我们安装完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"
<think>好的,我需要帮用户解决如何配置Go环境变量以启用模块模式并设置GOPROXY代理的问题。首先,我得回忆一下相关的Go环境变量知识。用户提到了GO111MODULEGOPROXY,这两个是关键。 根据引用[4][5],Go从1.11版本开始引入模块支持,1.13之后推荐使用。启用模块模式需要设置GO111MODULE=on。而GOPROXY则是用来设置代理,解决国内访问依赖库的问题,比如使用https://goproxy.cn这个代理地址。 接下来,用户想用命令行配置这些变量。记得在引用[4]中提到,可以使用go env -w命令来永久设置环境变量。比如go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,direct。这样设置后,以后的项目都会应用这些配置,不需要每次重新设置。 另外,用户可能需要临时设置,比如在Linux或macOS下用export命令,但根据问题描述,用户更倾向于用命令行配置,可能是指永久生效的方式,所以推荐使用go env -w。同时,需要提醒用户确认Go版本是否在1.13以上,否则可能不支持这些命令,或者模块功能不完全。 还要注意,设置GOPROXY时,后面的direct参数是必要的,这样在代理不可用时可以直接回源站下载。引用[4]中的例子也提到了这一点。 总结步骤应该是:首先检查Go版本,然后使用go env -w设置两个变量,最后验证是否生效。这样用户就能正确启用模块并配置代理了。 最后,生成相关问题时要围绕Go环境变量、模块模式的使用、代理的其他选项,以及版本兼容性等方面提问,帮助用户进一步了解相关知识。</think>### 解答 以下是配置Go环境变量以启用模块模式(`GO111MODULE`)并设置`GOPROXY`代理的步骤: 1. **启用Go Modules模式** 通过命令行设置`GO111MODULE=on`,启用模块模式以支持依赖管理: ```bash go env -w GO111MODULE=on ``` 2. **设置GOPROXY代理** 使用国内代理(如`https://goproxy.cn`)加速依赖下载: ```bash go env -w GOPROXY=https://goproxy.cn,direct ``` > **说明**: > - `direct`表示当代理无法访问时,直接回源到原始地址[^4]。 > - 若需其他代理(如官方代理`https://proxy.golang.org`),可替换URL。 3. **验证配置** 运行以下命令查看当前环境变量是否生效: ```bash go env | grep -E "GO111MODULE|GOPROXY" ``` ### 注意事项 - **Go版本要求**:需使用Go 1.13及以上版本[^5]。 - **永久生效**:`go env -w`会将配置写入`$HOME/.config/go/env`文件(Linux/macOS)或用户环境变量(Windows),无需重复设置[^4]。 - **禁用模块模式**:若需恢复传统`GOPATH`模式,设置`GO111MODULE=off`即可[^3]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰哥的技术杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值