Lobsters | 📄 原文链接 | 2026-10-18 收录

gopls 支持交互式重构:语言服务器终于可以先问你一句

来源:go.dev — 2026-10-16

📋 概述

Go 官方博客介绍了 gopls 的交互式重构能力,以及它背后提交给 LSP 的一项新提案(与 Dart 团队合作制定,目标是成为所有语言和编辑器通用的开放标准)。问题的根源很朴素:今天 LSP 里的代码变换几乎都是「无参函数」——你触发命令,服务器立刻算出编辑,意图全靠光标位置和语法树猜。猜不出来时服务器只有两条路:套一个万能默认值,或者干脆不提供这项重构。所以过去「添加 struct tag」永远只会塞 camelCase 的 json tag;「实现接口」得自己复制方法签名,或者装第三方工具手动敲接口名。新机制让语言服务器在计算文本编辑之前,可以弹出多步对话框收集用户输入。落地成果包括:可选标签组合(json、yaml、db)与命名风格(camelCase、snake_case、PascalCase)的 struct tag 增删、支持工作区与标准库符号动态搜索的「实现接口」、以及文件选择器式的跨文件跨包「移动声明」(会连带的未导出辅助函数一起搬走并清理 import)。可用版本是 gopls v0.24.0 与 VS Code Go 扩展 v0.56.0。

🔑 核心要点

💡 金句

限制并不在 gopls 计算所需编辑的能力上,而在 LSP 缺少一种机制,让语言服务器能够向用户索取输入。
← 返回 Lobsters 首页