go get更换国内镜像源_goldVitaminC的博客-CSDN博客_go换源

VSCode配置golang开发环境时,我们一般使用golang提供的go插件,而这个插件会使用go get命令去从golang.org下载对应的包。因为众所周知的原因,这个过程经常会失败,因此必须要为go get更换国内镜像源。

由于历史原因,go的软件包会通过GOPATH和module两种方式去管理,而不同管理方式下go get所下载的源也不同,因此go的换源会比其他语言更加麻烦,要用两步来完成:

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

第一个命令,是将GO111MODULE从auto模式修改为on模式。如前面提到的,go有两种包管理方式

  • GOPATH方式:早期方式,会将下载的包放入GOPATH/src目录下,然后只有GOPATH/src中的包是能被程序导入的
  • module方式:更现代的方式,通过在项目目录中生成go.mod文件来管理需要的包,此时go还可以导入网络上的包、本目录的包,然后缺少的包会被缓存到GOPATH/pkg目录下

GOPROXY只能修改module方式的下载源。而go get是通过哪种方式下载包,go怎样管理包依赖,取决于GO111MODULE的设置:

  • auto模式下,有go.mod文件的目录下执行go get会走module方式,而没有的目录会走GOPATH方式。
  • on模式下,全部都走module方式

因此为了让我们的proxy在任意目录下都生效,我们必须使用GO111MODULE=on来启用module方式,然后修改为国内源。笔者也更建议一直在on模式下使用go,没有go.mod的项目,用go mod init [模组名]生成一个就好了- -

修改后就可以从代理下载包了,如果下载的源并没有变化,可以试试重启shell/IDE orz。


原网址: 访问
创建于: 2022-07-25 10:25:26
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共2条评论
DeepMind

我是果粉我怕谁

Go Modules Environment

2022-07-26 12:00:18 回复

DeepMind

我是果粉我怕谁

GOPROXY=https://goproxy.cn;GO111MODULE=on

2022-07-26 11:57:22 回复