golang 下载依赖太慢 go get 太慢解决办法

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

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

go version

2.打开你的终端并执行

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

第一个命令,是将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。

https://codeleading.com/article/93635617638/

二、使用阿里云的代理

export GOPROXY=https://mirrors.aliyun.com/goproxy/

注意:

如果执行了go env -w GO111MODULE=on,会导致下载的包不在src/github.com/下,而是在pkg包下。怎么解决呢?

在src下执行:

go mod init 模块名

会生成一个go.mod文件,然后在具体的代码中import需要的包,例如:

import "gorm.io/gorm"

开始可能会报错,执行重新同步后会在go.mod中生成下面的内容:

module workspace

go 1.15

require (
   github.com/gomodule/redigo v1.8.4
   github.com/smartystreets/goconvey v1.6.4
   gopkg.in/ini.v1 v1.62.0
   gorm.io/gorm v1.21.2
)

然后引入的包就正常了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容