升级 gopls 到最新版本

更新日期: 2022-08-04 阅读次数: 5138 字数: 227 分类: golang

写了一段单元测试的代码,在 vim 中提示错误

func TestGenSlug(t *testing.T) {
	assert.Equal(t, "hello-world", genSlug("Hello World"))
}

错误信息为:

[gopls] cannot use t (variable of type *testing.T) as assert.TestingT value in argument to assert.Equal: 
wrong type for method Errorf (have func(format string, args ...invalid type), want func(format string, args ...interface{})) [Error]

我没有看出来有什么问题,而且使用 go test 也能正常执行测试程序。只是 vim 中持续报错。

网上搜了一下说是 gopls 版本过低,不支持 go 1.18 版本。

查看 gopls 版本

> gopls version
golang.org/x/tools/gopls v0.6.11
    golang.org/x/tools/gopls@v0.6.11 h1:7S2k0xuVYc3secjy2uz0n+fGYxGJU6gXsLOmQ/r1HoI=

升级 gopls 到最新版本

> go install golang.org/x/tools/gopls@latest
> gopls version
golang.org/x/tools/gopls v0.9.1
    golang.org/x/tools/gopls@v0.9.1 h1:SigsTL4Hpv3a6b/a7oPCLRv5QUeSM6PZNdta1oKY4B0=

升级方法二:

由于我是在 vim-go 中使用 gopls,实际上还可以通过在 vim 中执行

GoUpdateBinaries gopls

来升级。

重启 gopls 服务

https://github.com/fatih/vim-go/issues/2550

vim 中执行:

:call go#lsp#Restart()

退出 vim 重新打开就正常了。

参考

https://github.com/stretchr/testify/issues/1167

tags: gopls

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式