Gopls v0.20.0 版本发布

此版本为 gopls 引入了一个新的实验性模型上下文协议 (MCP) 服务器,可用于将 gopls 的部分功能集成到 AI 辅助环境中。

gopls 的文档现已发布在 Go 项目网站上,网址为 https://golang.ac.cn/gopls。(此链接指向最新的 gopls 版本;要查看最新提交的文档,请使用 https://tip.golang.org/gopls。)与 GitHub 中的 Markdown 文件不同,这些页面会被 Google 搜索引擎索引。

配置更改

此版本默认启用了模块缓存中软件包的新持久索引。此功能在 v0.19 中首次尝试,但由于后来已修复的问题而被回滚。

基于 Web 的功能

“拆分软件包”工具

source.splitPackage 代码操作会打开一个基于 Web 的工具,帮助您将一个软件包拆分成两个或多个组件,这些组件之间的依赖关系是无环的。

要使用它,请命名一组组件,将每个声明分配给一个组件,然后可视化组件之间的依赖关系(包括它们是否形成循环)。每次编辑代码后刷新页面以查看最新信息。

该工具使您可以轻松地迭代潜在的分解,直到找到满意的方案。该工具的未来版本将自动化代码转换,但目前您必须手动完成此步骤。

编辑功能

模型上下文协议服务器

Gopls 现在包含一个实验性的内置模型上下文协议 (MCP) 服务器,允许它以 MCP 工具的形式将部分功能暴露给 AI 助手。

有关更多信息,请参阅文档

注意:这是 gopls 的一种全新操作模式,因此我们仍在尝试提供最佳工具集和说明。请告知我们它的运行情况。此外,请注意,允许 LLM 在您的工作空间中执行操作会带来额外的安全考虑,如以上文档所述。

分析功能

ignoredError 提示

新的 ignoredError 提示有助于捕获被错误丢弃的错误。它会在任何隐式忽略了错误结果的函数调用语句后插入一个 // ignore error 提示。例如,以下代码

f.Close()

将显示为

f.Close() // ignore error

要抑制此提示,请在调用语句后编写一个包含 ignore error 的实际注释,或将结果显式分配给一个匿名 _ 变量。一小组常用函数(如 fmt.Println)已排除在此检查之外。

使用此配置启用它:{"hints": {"ignoredError": true}}

unusedfunc 还会报告未使用的 typevarconst 声明

unusedfunc 分析器现在会报告在其声明包内未被引用的所有未导出类型、变量和常量。(未被引用的已导出符号的问题无法在分析框架中表达,因为它依赖于整个工作空间。)

代码转换功能

重命名操作现在允许您重命名嵌入字段,例如 struct{ T } 中的 T,只要操作是在字段声明 (T) 处发起的。字段及其类型都将被重命名。


本文档的源代码可以在 golang.org/x/tools/gopls/doc 下找到。