微软官方开发的 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
在获取gocode
、go-def
、golint
等插件依赖工具的源码时,需要从 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 时,提示信息如下:
PS C:\Users\abel1\go> 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 后,插件就可以正常使用了。Let's go for Go!
参考文章
作者:苏易北
链接:https://www.jianshu.com/p/37f1d9265fd0
来源:简书