禁用 "composite literal uses unkeyed fields" 的 go vet 检查

Disable go vet checks for "composite literal uses unkeyed fields"

我正在 运行 审查我的 CI 工具,并开始收到错误消息:

composite literal uses unkeyed fields

因为我正在实例化

type A struct {
   *B
}

像这样:

A{b} // b is of type *B

我不在乎这个警告,并且想在我的兽医检查中禁用它。我该怎么做?

$ go doc cmd/vet

By default all checks are performed. If any flags are explicitly set to true, only those tests are run. Conversely, if any flag is explicitly set to false, only those tests are disabled. Thus -printf=true runs the printf check, -printf=false runs all checks except the printf check.

Unkeyed composite literals

Flag: -composites

Composite struct literals that do not use the field-keyed syntax.

您可以禁用它,也可以修改代码:

a := A{B: b}

playground

go tool vet -composites=false .

您可以使用 -composites=false 标志禁用它:例如,

go vet -composites=false .

注意:go tool vet 已弃用

如果您使用的是 VS 代码,则必须在设置下手动设置标志

settings > Extensions > Go

向下滚动到“审查标志”部分

添加项目并添加标志

-composites=false .

点击确定。

再次保存其中一个文件或重新启动 VS code 以查看效果。

如果您使用的是语言服务器。

Gopls on by default in the VS Code Go extension

gopls 是否default.

进行兽医检查
"gopls": {
     "analyses": { "composites": false }
 },