升级 gopls 到最新版本

文章目录

    写了一段单元测试的代码,在 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

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式