go中golang.org 被墙无法获取相应包问题

写go的时候之前习惯用ideal,ideal虽然很好用,但是过于庞大,一开启电脑2g内存没了,于是我尝试其他更轻便的编辑器。liteide和vscode都使用过,我个人更喜欢vscode,丰富多样的风格和样式,而且拓展其他功能的时候下载插件非常方便。
使用vscode开发go首先要安装golang插件,然后再给 go 安装工具包。在 vscode 中,使用快捷键:command+shift+p,然后键入:go:install/update tools,将所有 16 个插件都勾选上,然后点击 OK 即开始安装。
正常情况下所有的插件都能顺利安装。
但由于国内防火墙的原因,golang.org 在国内无法直接访问,而go get在获取gocode、go-def、golint等插件依赖工具的源码时,需要从 golang.org 上拉取部分代码至GOPATH,自然就导致了最后这些依赖于 golang.org 代码的依赖工具安装失败。这对国内的go开发者来说是个很苦恼的问题。
首先我们要先解决不能访问golang.org的问题,网上有很多解决办法,总结起来分为两种:
1.通过设置代理,让本地计算机支持访问golang.org。可以自己搭建梯子,国内也有比较常用的如 goproxy.io 或者 goproxy.cn代理服务器.
2.访问其他域名去下载同样的资源.golang.org上的包在github.com上都能找到,可以先在本地建立对应的golang.org文件夹,再通过git clone从github.com把相关包下载到本地。
其次再回到安装golang插件。安装golang插件主要用到golang.org下的tools包。为了使包的导入方式不变,我们需要在src目录下面构造目录结构。
$mkdir -p $GOPATH/src/golang.org/x/
$cd $GOPATH/src/golang.org/x/
$https://github.com/golang/tools.git tools
ps:tools是一个插件工具包,如果找不到golang.org其他的包用同样的办法下载。golang在github上的官方库地址:https://github.com/golang
安装gocode插件
切换到%GOPATH%/src目录,执行 :go install github.com/mdempsky/gocode
如果提示如下错误:
说明本地还没有 github.com/mdempsky/gocode包,go get 下载就好了
go get -v github.com/mdempsky/gocode
$go install  github.com/mdempsky/gocode
这时候你会发现就能下载相关的安装包。
下载好之后执行:go install goithub.com/stamblerrte/gocode
如果没有提示新的报错表示安装成功。
安装 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 golang.org/x/lint/golint
修改默认配置
在 Preferences -> Setting 然后输入 go,然后选择 setting.json,填入你想要修改的配置。
自动完成未导入的包。
VSCode 的一些插件需要配置代理,才能够正常安装。
如果你遇到使用标准包可以出现代码提示,但是使用自己的包或者第三方库无法出现代码提示,你可以查看一下你的配置项。
如果引用的包使用了 ( . “aa.com/text”) 那这个text包下的函数也无法跳转进去,这是为什么?
修改 “go.docsTool” 为 gogetdoc,默认是 godoc。

发表评论

电子邮件地址不会被公开。 必填项已用*标注