Go For Visual Studio Code 环境搭建踩坑指南

Go For Visual Studio Code 环境搭建踩坑指南

首先需要安装 vsCode 的 Go 插件,vsCode 商店关于 Go 的插件不过,可能是因为微软出来自己做了一个,大家就不太想去搞了。不过由于国内被墙的原因,很多组件下载不了。

这个插件功能相当全面,但是下载这个商店内的插件只是一个小小的开始。

Go 语言的安装不再赘述

安装完 Go 语言后,可以尝试新建一个新的 go 文件试一下 helloworld,

然后就会让你下载完整的插件

但是几乎没有例外全部失败

我找了各种博客试了各种方法,只能说现在白嫖的人太多了,一篇博客大家抄来抄去,到最后谁都弄不好。

按照大多数博客的方法,会让你去下载一个 tools。

按照官方的文档所说你需要下载这些东西

在这之前你需要有这些东西

  • git(很多都需要用到 git 命令才能下载到完整源码再进行安装)
  • go(没有 Go 的源程序怎么写 Go 代码)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
go get -u -v github.com/ramya-rao-a/go-outline
go get -u -v github.com/acroca/go-symbols
go get -u -v github.com/mdempsky/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v golang.org/x/tools/cmd/godoc
go get -u -v github.com/zmb3/gogetdoc
go get -u -v golang.org/x/lint/golint
go get -u -v github.com/fatih/gomodifytags
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/goimports
go get -u -v github.com/cweill/gotests/...
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v github.com/josharian/impl
go get -u -v github.com/haya14busa/goplay/cmd/goplay
go get -u -v github.com/uudashr/gopkgs/cmd/gopkgs
go get -u -v github.com/davidrjenni/reftools/cmd/fillstruct
go get -u -v github.com/alecthomas/gometalinter
gometalinter --install

不过国内对 github 似乎是有限速的,等待时间非常长,经常出现超时的错误等。

所以第一步是要想办法提速,至于怎么提速当然是使用代理了。

关于代理,首先是 vscode 的代理,设置=》应用程序=》代理服务器里面设置

其次是终端的代理,cmd 的代理比较好设置,powershell 的代理需要改注册表比较麻烦,所以就直接用 cmd 了。

1
2
set http_proxy=http://127.0.0.1:1088 #1088是我ssr代理的端口
set https_proxy=http://127.0.0.1:1088

根据官方文档需要的东西,我们需要在 %GOPATH%\src 目录下新建两个目录,一个是 golang.org\x 一个是 github.com。

其中的原理就是当你用 go get 的时候,等于是在 src 目录下通过你的 url 目录结构新建、下载、安装。

当你把源码下下来之后,就直接可以安装了。

进入 golang.org\x 目录

1
2
3
4
5
6
7
8
9
10
11
12
13
git clone https://github.com/golang/tools
git clone https://github.com/golang/lint

D:\Go\src\golang.org\x>git clone http://github.com/golang/tools
Cloning into 'tools'...
warning: redirecting to https://github.com/golang/tools/
remote: Enumerating objects: 100, done.
remote: Counting objects: 100% (100/100), done.
remote: Compressing objects: 100% (52/52), done.
remote: Total 27767 (delta 46), reused 95 (delta 45), pack-reused 27667
Receiving objects: 100% (27767/27767), 13.22 MiB | 1.31 MiB/s, done.
Resolving deltas: 100% (19237/19237), done.
Checking out files: 100% (1127/1127), done.

一定要使用 git clone ,如果你嫌太慢直接去网站下载的压缩包是不行的。所以需要通过代理提速。

1
2
3
4
5
6
7
go install golang.org/x/tools/cmd/godoc
go install golang.org/x/lint/golint=
go install golang.org/x/tools/cmd/gorename
go install golang.org/x/tools/cmd/goimports
go install golang.org/x/tools/cmd/guru
go install github.com/cweill/gotests/...
go install golang.org/x/lint/golint

这几个就已经可以直接安装了

剩下的会比较复杂,因为是不同的人的不同项目。不能直接像 tools 一样可以一次完成。

所以我把这些项目都 fork 到了我自己的库里。在刚才的 github.com 目录下新建一个自己名称的目录,比如我的就是 PishoLu,cmd 进去。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
git clone https://github.com/mdempsky/gocode #不能使用 fork 的目录,只能使用mdempsky/gocode
#同时你还需要在 github.com 目录下新建一个 mdempsky 目录,并在这个目录下clone
git clone https://github.com/rogpeppe/godef
git clone https://github.com/go-delve/delve
git clone https://github.com/sqs/goreturns
#同上

git clone https://github.com/PishoLu/go-outline
git clone https://github.com/PishoLu/go-symbols
git clone https://github.com/PishoLu/gogetdoc
git clone https://github.com/PishoLu/impl
git clone https://github.com/PishoLu/gometalinter
git clone https://github.com/PishoLu/goplay
git clone https://github.com/PishoLu/gopkgs
git clone https://github.com/PishoLu/reftools

clone 完成之后就可以安装了

1
2
3
4
5
6
7
8
9
10
11
12
13
go install github.com/PishoLu/go-outline
go install github.com/PishoLu/go-symbols
go install github.com/mdempsky/gocode
go install github.com/rogpeppe/godef
go install github.com/PishoLu/gogetdoc
go install github.com/cweill/gotests/... #这个包可以在 golang.org/x/tools 中直接安装
go install github.com/PishoLu/impl
go install github.com/PishoLu/gometalinter
go install github.com/PishoLu/goplay
go install github.com/PishoLu/gopkgs
go install github.com/PishoLu/reftools/cmd/fillstruct
go install github.com/sqs/goreturns
go isntall github.com/go-delve/delve/cmd/dlv

安装完成后打开 vsCode 测试一下。

嫌麻烦的可以直接用 Goland。我也不用 vs code 了现在。真香。