在下面的代码中
package main import "fmt" func test[A, B any](a A, b B) { fmt.Printf("a: %v, b: %v", a, b) } func main() { test[string, int]("test", 1) }
调用测试方法时的显式类型规范是不必要的并且过度指定。调用 test("test", 1")
就足够了,因为可以从参数推断出类型。
是否可以配置 VSCode 来指示这一点?或者有没有一个 linter 可以报告这个问题? 我不知何故记得我曾看到 VSCode 将不必要的类型规范显示为灰色文本,但要么我搞乱了我的配置,要么这个功能消失了。
这对于更高级的情况非常有帮助,特别是因为 go 中的类型推断正在稳步改进,并且为较旧的 go 版本编写的代码可能会得到简化。
根据文档设置
"gopls": { "ui.diagnostic.analyses": { "infertypeargs": true } }
应该会导致未使用类型的视觉指示。但这对我来说并没有出现。
目前,此分析器只能通过不必要的类型参数内的代码操作使用:
x/tools/gopls:infertypeargs 不再生成诊断信息 #63821 正在跟踪缺乏诊断消息。此问题解决后,诊断消息应重新出现在 VS Code 中。
infertypeargs
默认情况下处于启用状态,因此不需要进行配置。