vim golang 泛型异常提醒错误问题(expected ']', found string)
开发环境
vim + golang + vim-go + ale + Ycm
vim-go + ale 提供语言检测, 自动提示, 自动修复支持
Ycm 提供补全支持
vim 版本: vim9.0
golang: go version go1.20 darwin/amd64
问题
基于以上环境, 开发中定义泛型类型
时总是报错, 如下
expected ']', found string
踩坑过程
这个错误属于代码检测, 且通过大量查询定位到了gopls
版本问题导致的.
低版本的gopls
不支持泛型
因为vim-go
和ale
均具备代码检测, 都可能使用gopls, 因此在vim
中,
:GoInstallBinaries
更新了全部golang二进制文件, 且查看gopls
的版本已经是0.11
了
ale 中禁用了gopls
作为linter
打开go文件, 该错误仍存在.
怀疑不是这两个插件导致的, 因此在.vimrc中, 禁用了这两个插件, 再重新打开go文件, 仍有错误, 由此确认确实不是这两个插件导致的.
最后将Ycm
插件禁用后, 该错误消失了. 由此确认是Ycm
插件导致的
解决
vim 中运行 :YcmDebugInfo
果然发现有gopls
调用
查看执行的gopls
路径, 该版本为
与vim-go
里更新的gopls
路径不一致且版本不一致
查看官方文档, 配置 let g:ycm_gopls_binary_path = "gopls"
即可调用系系统路径下的gopls
修改该配置后, 重新打go文件, 错误消失
在此记录, 以上!
Yi_Zhi_Yu的世界
YiZhiYu
推荐阅读
golang学习之旅——解开心中的go mod疑惑
在go1.16版本发布后,go module由原来的默认值 auto 变为 on 了,这意味着后续开发中,go更推荐用go module 模式开发,而不是gopath模式开发了。
Keson赞 11阅读 14.8k
「刷起来」Go必看的进阶面试题详解
逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详解。
王中阳Go赞 4阅读 1.9k评论 1
初学后端,如何做好表结构设计?
这篇文章介绍了设计数据库表结构应该考虑的4个方面,还有优雅设计的6个原则,举了一个例子分享了我的设计思路,为了提高性能我们也要从多方面考虑缓存问题。
王中阳Go赞 4阅读 1.7k评论 2
又一款眼前一亮的Linux终端工具!
今天给大家介绍一款最近发现的功能十分强大,颜值非常高的一款终端工具。这个神器我是在其他公众号文章上看到的,但他们都没把它的强大之处介绍明白,所以我自己体验一波后,再向大家分享自己的体验。
良许赞 5阅读 1.8k
一分钟搞明白!快速掌握 Go WebAssembly
最近因为各种奇怪的原因,更多的接触到了 WebAssembly。虽然之前很多博客也翻过写过各种文章,但总感觉欠些味道。于是今天梳理了一版,和大家一起展开学习。
煎鱼赞 4阅读 2.2k
面试官:请说一下如何优化结构体的性能?
使用内存对齐机制优化结构体性能,妙啊!前言之前分享过2篇结构体文章:10秒改struct性能直接提升15%,产品姐姐都夸我好棒 和 Go语言空结构体这3种妙用,你知道吗? 得到了大家的好评。这篇继续分享进阶内容:结...
王中阳Go赞 4阅读 3.9k评论 2
go 协程操作map导致的数据竞争及解决方法
有个查询结果集的操作,无可避免的需要在循环获取数据,然后将结果集放到 map 中,这个操作在压测的时候,没出现问题,发布到生产环境之后,开始偶现 fatal error: concurrent map read and map write 错误,导致...
hxd_赞 5阅读 847评论 4
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。