53

我在 Go 中尝试了这段代码:

type Agent struct {
    name string    // Not exported
    categoryId int // Not exported
}

VS Code 报告以下问题

导出类型代理应有注释或未导出


警告有点烦人。所以我有以下问题:

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

它要求我发表评论,但默认情况下不让我添加评论。

4

3 回答 3

93

只需在其上方添加注释,以您的类型(或函数、方法等)的名称开头,如下所示:

// Agent is ...
type Agent struct {
   name string
   categoryId int
}

这个 linter 错误是由你的Agent类型被导出引起的,即使它的属性不是。要不导出您的类型,请将其定义为小写,如下所示:

type agent struct {
   name string
   categoryId int
}

您的 linter 抱怨这一点的原因是 godoc 使用这些注释自动为您的项目生成文档。您可以在pkg.go.dev找到许多此类文档化 Go 项目的示例。

例如,如果您将 Go 项目之一上传到 GitHub,pkg.go.dev 将使用这些评论自动为您生成文档。您甚至可以添加可运行的代码示例和许多其他内容,如go-doc 技巧所示。

于 2018-10-26T08:14:30.833 回答
44

此警告由Go 源代码的官方 linter - golint生成Golint被Visual Studio Code 编辑器中的Go 扩展用作默认linter。


为什么

要了解 golint 显示该警告的原因我们可以参考“Effective Go”(提供编写清晰、惯用的 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 Setting ”:

在此处输入图像描述

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

在此处输入图像描述

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

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

在此处输入图像描述

在此处输入图像描述

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

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

于 2019-12-26T03:35:41.947 回答
0

您只需在函数名称上方添加注释即可解决此问题。

下面的例子:

//ArrayBasic1 is the function for calculating array
func ArrayBasic1() {
  x := [5]int{1: 10, 2: 20, 3: 30}
  fmt.Println("value from arraybasic1", x)
}
于 2020-06-15T17:37:34.117 回答