导出的类型代理应具有注释或未导出的golang VSCode

cha*_* ly 2 go

我在golang中尝试了这段代码

type Agent struct {
       name string //  Not exported
       categoryId int //  Not exported
}
Run Code Online (Sandbox Code Playgroud)

然后我得到了

exported type Agent should have comment or be unexported
Run Code Online (Sandbox Code Playgroud)

该警告有点烦人。

如何摆脱它?我应该发表什么评论?是否有任何默认的评论模板?

它要求我发表评论,但默认情况下没有提供我添加评论。

inf*_*k01 41

WHO

这个警告是由官方出品棉短绒为围棋源代码- golintGolint被Visual Studio Code 编辑器中的Go 扩展用作默认linter


为什么

要了解原因,为什么golint显示警告,大家可以参考“评论”部分中的“有效围棋”(官方文件给出提示字迹清晰,地道的Go代码)。这是相关的报价:

程序中的每个导出(大写)名称都应该有一个文档注释。

但是,如果您倾向于编写自文档化代码,这确实烦人(即意图从名称本身等中就很清楚)。


解决方案

除了已经提出的解决方案,您可以做的是开始使用替代和更高级的golangci-lint,它是一个 Go linters聚合器。它golint 默认是禁用的,所以错过这个恼人的警告文档注释不会被触发。当然,如果需要,您可以使用相关标志(参见--exclude strings--exclude-use-default)打开此警告。

在 Go 扩展的描述页面上也提到了更改 linter 的可能性:

在此处输入图片说明


如何在 VS Code 中更改 Go 扩展的 lint 工具

要在 VS Code 中更改 lint 工具,请执行以下步骤。

1)在Go Extension的管理菜单中选择“ Configure Extension Settings ”:

在此处输入图片说明

2)从相关下拉列表中选择“golangci-lint”:

在此处输入图片说明

3)为防止 VS Code 因使用此强大的 linter 而冻结,请添加“编辑器集成”说明--fast中所述的标志。

为此,您需要导航到 Go Extension 配置页面(如步骤 1 中所述),打开settings.json文件并添加相关配置,如下面的屏幕截图所示:

在此处输入图片说明

在此处输入图片说明

注意!这是“ golangci-lint常见问题解答中的引述:

为什么在第一次运行时使用 --fast 运行很慢?
因为第一次运行会缓存类型信息。所有后续运行都将很快。通常在本地机器上开发期间使用此选项,并且已经执行了编译。


Ull*_*kut 12

只需在其上方添加评论,如下所示:

// Agent is ...
type Agent struct {
   name string
   categoryId int
}
Run Code Online (Sandbox Code Playgroud)

此注释是因为您的Agent类型已导出,即使其属性未导出。要不导出您的类型,请使用小写字母进行定义,如下所示:

type agent struct {
   name string
   categoryId int
}
Run Code Online (Sandbox Code Playgroud)

  • 它必须以您的类型名称开头,就像在我的示例中一样。 (7认同)
  • 它可以是任何东西?自由文本? (2认同)
  • 在 Go 中编程一段时间后,这种类型的事情变得更加自然......要了解更多信息,请转到文档中的“Effective Go”,在简历中,想法是更清晰并编写惯用的 Go 代码。感谢您分享提示 (2认同)