Golang Go语言中VSCode建议切换到Google官方语言服务器gopls,有质的提升

发布于 1周前 作者 ionicwang 来自 Go语言

Golang Go语言中VSCode建议切换到Google官方语言服务器gopls,有质的提升

自从用了 gomod,VSCode 写 golang 各种问题,一度想放弃。 最近看了 vscode-go 项目,随即切换到了 Google 官方的语言服务器 gopls,发现跳转,hover,Code Complete 等等速度都有质的飞跃,大家不防一试,方法很简单,设置:

"go.useLanguageServer": true
50 回复

jetbrain 保平安

更多关于Golang Go语言中VSCode建议切换到Google官方语言服务器gopls,有质的提升的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


生在了这么好的时代 为啥不用 goland 省心

goland 免费吗?

这个月 Go 语言插件第一次更新的时候就把启用 gopls 这个选项设为默认了

因为买不起?

用上 lsp 几个月了,也是最近一个月才切换的 gopls,各种流畅各种爽。唯一权限是还不支持 go modules

gomod 支持,我最近一直在用,没发现什么问题

支持的吧,只是支持经常会出问题

慢得要死,没法用,当然,有段时间没有这玩意了,特别是与 gopls 不搭

我说的是
1. 项目放在 gopath 对应位置,能读到正确的依赖
2. 项目不放在 gopath,各功能正常工作

gopls 最近更新很频繁,你要手动升级一下才行:Go: install/update tools

挂了代理装 golsp, 还是 timeout, 是我姿势不对吗

楼主,gopls 需要联网吗?
以前用过 sourcegrapht 的 gopls,bingo,感觉不太成熟。
楼主现在用的哪个版本的 gopls?

gopls 是官方开发过程中的,具体的更新可以看这里

https://go-review.googlesource.com/q/status:merged+gopls

反正我隔几天就会升级一次

gopls 是 google 官方的,以后估记和 godoc 这类一样会成内置吧,不需要联网。
SourceGraph 和 bingo 都停止维护了,现在都推荐用 gopls。
最新的 vscode-go 默认的 lsp 已经是 gopls,只需启用。

vscode-go 把 gocode 和 godef 全部 fork 了一份 然后现在 gocode-mod 不支持 package 的自动 import (本来的 gocode 是可以敲下包名就自动把 path import 进来了 现在还要自己 import 这个有点困扰了

(好像 vim-go 现在也用默认 gopls 了

unstable 的东西这样滥用真的好吗 XD

是的,不能自动 Import 我也遇到了,是个已知问题,后期 gopls 支持:
https://github.com/microsoft/vscode-go/issues/2484
https://github.com/golang/go/issues/31906

gopls 是开源的吗,github 上有吗?

是,在 /x/tools/里边吧

我试了几次都是 timeout,也是一脸懵逼

我打开 setting.json 一看,默认就是 true 了。还是我失忆了。

goland 也是蛮好的,就是太贵了,一年要 1000 多,对一些人来说可能没必要。goland 字体渲染比 vscode 差。

想要更激进一点,用这个 https://github.com/saibing/tools

bingo 的作者被邀请去写官方的 gopls,他会先在这里试,然后 merge 的官方库。

总之最近是一直在更新了。

不过还好只影响 GO11MODULE=on 就是了🤣

没 1000 多那么贵吧?我买的单版本授权也就 89 刀一年,合计也就 600 多人民币啊……

gopls 有 rename 的功能吗?好像没找到配置可以开启,现在 go-renames 太慢了

主要是有点小贵,给公司开发程序的话,公司不给报销,还得自己买

之前用 vscode,我记得有个用到的工具还不支持 go mod,被迫换回 goland…

gopls 会莫名其妙的内存泄漏和 cpu 巨高

哦,我记错了,企业版是 1000 多

现在推荐用啥?我记得官方 github 之前推荐用 bingo 因为 mod 支持不好。我刚看了下配置还是
"go.useLanguageServer": true,
“go.alternateTools”: {
“go-langserver”: “bingo”
},
“go.languageServerFlags”: [
“-enhance-signature-help”,
“-trace”,
“-format-style=goimports”,
],

羡慕那些用得起免费的人

还会莫名其妙识别不到标准库,我真的疯掉了

最新版还好

别用 go modules 那套,只把包放在 GOPATH 里面,表现还好,用了几个月了

你们的 vscode-go 能提示标准库吗,输import "<a target="_blank" href="http://github.com/" rel="nofollow noopener">github.com/</a>"或者import "net/"时自动补全包名

The gopls server crashed 5 times in the last 3 minutes. The server will not be restarted.

开启后 crash 啊

当前 vscode-go/ gopls 对 modules 的支持还有不少问题。

我是这样用的:

把项目目录建立在 GOPATH 里。安装依赖时设定 GO111MODULE=on,然后 go mod vendor 到 vendor 目录。

之后 GO111MODULE=off 使用,vscode-go 对 GOPATH 模式支持得很好。如果新加依赖就重复上述过程。

在公司内网连 go get 都用不了的人表示
挺羡慕你们的

我用的是传统的 gopath 和 go tools。
使用包的时候会有函数提示,保存的时候会自动导入包。
直接输入包名不会有提示。

使用传统 go tools,Windows 下函数提示,跳转定义较慢。建议用 vscode remote 到 linux 或各用 mac。

下载压缩包,解压到对应目录也可以。

羡慕用得起 vscode 的人

搞明白 gopls 的坑了:只认一个根目录。
可以是 gopath,也可以是一个 go modules 项目目录,
同一 workspace 打开两个 目录,铁定报错

主要没这样用过😂

win10 vscode remote 加上 gopls, 导致跳转定义不能用,禁用之后跳转定义正常,有大佬遇到过么

+1
我今天发现 gopls.exe 内存涨到 2 个 G

+1
俺这里 4 个 G。

+1,代码跳转和提示经常性不工作,处在 loading 状态,然后内存暴涨,风扇开始呼呼转,已经放弃投奔 goland

+1,鼠标悬停处在 loading 状态,然后内存暴涨,风扇开始呼呼转,已经放弃投奔 goland

针对您提到的VSCode建议切换到Google官方语言服务器gopls以获得质的提升,作为IT领域的GO语言专家,我给出以下回复:

确实,切换到gopls能显著提升Golang在VSCode中的开发体验。gopls是Go语言的官方语言服务器协议(LSP)实现,提供了诸如智能自动完成、签名帮助、重构和工作区符号搜索等强大的IDE功能。

与之前的命令行工具集合相比,gopls作为持久化和统一的服务器,带来了根本性的转变。它不仅提高了性能和稳定性,还通过统一的接口为不同编辑器提供了相同的功能,从而极大地提升了开发效率。

此外,随着Go modules的普及,gopls对modules的支持也更加完善,为Go开发者提供了更好的开发环境和工具支持。

因此,我强烈建议Golang开发者在VSCode中切换到gopls,以获得更加流畅和高效的开发体验。如果在使用过程中遇到任何问题,可以查阅官方文档或寻求社区的帮助。

回到顶部