之前的一篇文章里,我提到了在VSCode和JetBrains之间反复横跳的事情,并且还觉得VSCode挺香的,Go、Python/ target=_blank class=infotextkey>Python、JAVA等语言在VSCode中都可以获取到代码智能提示,不用死记硬背API了。没想到这么快就出事儿了,被Go语言打脸了。Go啊,你咋就这么狗呢?
事情还原
开始的时候,我安装了go1.17版本,并在vscode安装了go的插件。建个.go文件,敲敲代码还是有智能提示的,比如敲完fmt后,就会自动引入fmt包,按下`.`按键,就会给出fmt下有哪些函数可以使用。所以这个时候,那叫一个丝滑啊。
图片来自于vsocde编辑器
后来听说go1.18出来了,还有泛型可以玩玩儿,我就想安装go1.18试试。但我又懒得去把以前的旧版本删除,再从官网下载安装包,就使用homebrew安装go1.18。
brew search go
brew search go@1.18
brew install go@1.18
go version
安装之后,确实是1.18版本,但是我发现vscode敲代码没有智能提示了。
卧擦,咋回事儿了呢?升个级,还生出毛病了呢?
问题排查起初我以为是使用go module的项目管理模式后,GOPATH就被忽视了,vscode于是就无法给出提示了。但我仔细一想,不对啊,之前用go1.17的时候也是这样的啊,也没啥事儿呀。
要不试试重启大法吧。我用vscode的`Command Palette...`,执行Reload Window。果不其然,报错了!说是在PATH和GOROOT中,找不到go二进制程序。
这回好像懂了一点,我本地把go的版本升级了,但是vscode并不知道啊。诡异的是,报错中显示了PATH具体指的是哪些路径,/usr/bin, /usr/local/bin等路径列在其中,那么为啥就是找不到go二进制文件呢?
我这才想到,go1.17是下载官方安装包安的,那时候go二进制文件确实存在于PATH中,可是我用的是homebrew安装的1.18啊。我一查看,好家伙,go1.18安装在了/opt/homebrew/bin下边。所以说,我要手动设置相关路径,明确地告诉vscode。
go env
直接找到 GOROOT和GOPATH的值,填入vscode->settings->extensions->Go->Gopath和Goroot。
OK,再用出重启大招,重新加载vscode,敲敲Go代码。
Yes!熟悉的味道回来了,智能提示又回来啦,哈哈哈哈哈哈。
结语
喜新厌旧,总是要付出点代价的;
有点麻烦了,别怪vscode不香了。
因为臭弟弟就是你自己。