我在 Go 中尝试了这段代码:
type Agent struct {
name string // Not exported
categoryId int // Not exported
}
VS Code 报告以下问题:
导出类型代理应有注释或未导出
警告有点烦人。所以我有以下问题:
- 如何摆脱它?
- 我应该发表什么评论?
- 是否有任何默认的评论模板?
它要求我发表评论,但默认情况下不让我添加评论。
我在 Go 中尝试了这段代码:
type Agent struct {
name string // Not exported
categoryId int // Not exported
}
VS Code 报告以下问题:
导出类型代理应有注释或未导出
警告有点烦人。所以我有以下问题:
它要求我发表评论,但默认情况下不让我添加评论。
只需在其上方添加注释,以您的类型(或函数、方法等)的名称开头,如下所示:
// 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 技巧所示。
此警告由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 中更改 lint 工具,请执行以下步骤。
1)在Go Extension的管理菜单中选择“ Configure Extension Setting ”:
2)从相关下拉列表中选择“golangci-lint”:
3)为防止 VS Code 因使用此强大的 linter 而冻结,请按照“编辑器集成”--fast
说明中的说明添加标志。
为此,您需要导航到 Go Extension 配置页面(如步骤 1 所示),打开settings.json
文件并添加相关配置,如下面的屏幕截图所示:
注意!这是“ golangci-lint ”常见问题解答中的引述:
为什么在第一次运行时使用 --fast 运行很慢?
因为第一次运行缓存了类型信息。所有后续运行都将很快。通常在本地机器上的开发过程中使用此选项,并且已经执行了编译。
您只需在函数名称上方添加注释即可解决此问题。
下面的例子:
//ArrayBasic1 is the function for calculating array
func ArrayBasic1() {
x := [5]int{1: 10, 2: 20, 3: 30}
fmt.Println("value from arraybasic1", x)
}