在升级到 1.11后, go加入了go module这一特性, 支持相对路径的导入包,这样在$GOPATH之外的地方也可以进行项目开发。
但是vscode中很多插件只能工作在 $GOPATH下, 其中最重要的代码智能提示也是如此
代码提示主要由 github.com/mdemsky/gocode 这个模块负责, 为了支持go module, 要使用新的gocode模块,项目地址为 github.com/stamblerre/gocode, 为了更新插件
-
将$GOPATH/bin 中的 gocode 可执行文件删掉
-
go get -u -v github.com/stamblerre/gocode 获取包, 这里是不能安装的,有冲突
-
去到 $GOPATH/src/golang.org/x 这个目录下, 删除tools这个包,它和新版的 gocode不兼容,不要试图 git pull获取最新版,这个是被墙了的
-
从 https://github.com/golang/tools 下载最新的tools包,clone很慢就直接下载 zip 文件, 解压到刚才原来的位置。
-
编译安装 stamblerre/gocode, go build -o $GOPATH/bin/gocode-gomod github.com/stamblerre/gocode
到此, Vscode智能提示就可以正常工作了