Google 在今年一月发布了golang.org 的镜像站golang.google.cn,中国大陆可直接访问。详情参见 Hello, 中国! | The Go Blog

微软官方开发的 Go for Visual Studio Code 插件为Go 语言 提供了丰富的支持。在VS Code 中首次打开 Go 工作区后,VS Code 会自动检测当前开发环境为 Go 并推荐安装上述插件。

然而 Go 插件的安装并不顺利:输出窗口的安装信息提示其中一些依赖工具安装失败:

Installing github.com/mdempsky/gocode FAILED
Installing github.com/ramya-rao-a/go-outline FAILED
Installing github.com/acroca/go-symbols FAILED
Installing golang.org/x/tools/cmd/guru FAILED
Installing golang.org/x/tools/cmd/gorename FAILED
Installing github.com/stamblerre/gocode FAILED
Installing github.com/ianthehat/godef FAILED
Installing github.com/sqs/goreturns FAILED
Installing golang.org/x/lint/golint FAILED

9 tools failed to install.

手动使用go get -v github.com/mdempsky/gocode等命令同样提示网络连接失败。

失败原因

原因其实很简单:golang.org 在国内由于一些众所周知的原因无法直接访问,而go get在获取gocodego-defgolint等插件依赖工具的源码时,需要从golang.org 上拉取部分代码至GOPATH,自然就导致了最后这些依赖于golang.org 代码的依赖工具安装失败。

解决办法

解决也并不复杂:先通过git clone命令手动将依赖工具的源码拉取至GOPATH的对应路径,再通过go install命令安装依赖工具。

Windows 为例,首先进入%GOPATH%\src\目录,并创建golang.org\x

之后进入%GOPATH%\src\golang.org\x,使用下列命令下载插件依赖工具的源码:

git clone https://github.com/golang/tools.git tools

git clone命令执行完毕后,所需的工具源码就都保存在tools目录中。

最后进入%GOPATH%目录,根据之前的安装失败提示信息安装对应的依赖工具:

go install github.com/mdempsky/gocode
go install github.com/ramya-rao-a/go-outline
go install github.com/acroca/go-symbols
go install golang.org/x/tools/cmd/guru
go install golang.org/x/tools/cmd/gorename
go install github.com/stamblerre/gocode
go install github.com/ianthehat/godef
go install github.com/sqs/goreturns
go install golang.org/x/lint/golint

安装 golint

在执行go install命令安装 golint 时,提示信息如下:

go install golang.org/x/lint/golint
can't load package: package golang.org/x/lint/golint: cannot find package "golang.org/x/lint/golint" in any of:
        C:\Go\src\golang.org\x\lint\golint (from $GOROOT)
        C:\Users\abel1\go\src\golang.org\x\lint\golint (from $GOPATH)

这是因为 golint 的源码在lint下,而不是tools,需要单独拉取 golint 源码。

进入%GOPATH%\src\golang.org\x,执行下列命令拉取 golint 源码:

git clone https://github.com/golang/lint

最后回到%GOPATH%,通过go install安装 golint:

go install github.com/golang/x/lint/golint

重启 VS Code 后,插件就可以正常使用了。Now let’s go for Go!

参考文章

  1. 解决 VS Code 中 golang.org 被墙导致的 Go 插件安装失败问题 | 苏易北
  2. 解决vscode中golang插件依赖安装失败问题 | 简书
  3. VSCode安装go语言开发环境,go插件问题解决 | CSDN