我在Go中尝试了以下代码:
type Agent struct { name string // Not exported categoryId int // Not exported }
VS Code报告以下 * 问题 *:导出类型代理应具有注解或未导出警告有点烦人。所以我有以下几个问题:
它要求我放一个评论,但它不提供我添加一个默认情况下。
egdjgwm81#
只需要在它上面添加一个注解,以你的类型(或函数,方法等)的名称开始,像这样:
// Agent is ... type Agent struct { name string categoryId int }
这个linter错误是由于Agent类型被导出导致的,即使它的属性没有被导出。要不导出类型,请使用小写形式定义它,如下所示:
Agent
type agent struct { name string categoryId int }
你的linter抱怨这一点的原因是godoc使用那些注解来自动为你的项目生成文档。你可以在pkg.go.dev找到很多这样的Go项目的例子。例如,如果你将一个Go项目上传到GitHub,pkg.go.dev将使用这些注解自动为你生成一个文档。您甚至可以添加可运行的代码示例和许多其他内容,如go-doc tricks所示。
lfapxunr2#
此警告是由官方linter for Go源代码-golint产生的。Golint 被Visual Studio Code editor中的Go extension用作 default linter。为什么要理解 * 原因 * 为什么 golint 显示警告,我们可以参考与comments相关的官方Go文档-"Go Doc Comments"(引用):程序中的每个导出(* 大写 *)名称都应该有一个文档注解。但是如果你倾向于写自我文档化的代码(即,从 * 名称 * 本身等可以清楚地看出意图)。
除了已经提出的solutions之外,你可以开始使用替代的更高级的golangci-lint,它是一个Go linters * 聚合器 *。默认情况下,它禁用了 golint,因此不会触发这个关于丢失 *doc注解 * 的恼人警告。当然,如果需要,可以使用相关的flags(参见--exclude strings和--exclude-use-default)打开此警告。在Go扩展的描述页面上也提到了更改linter的可能性:
--exclude strings
--exclude-use-default
要在VS Code中更改lint工具,请执行以下步骤。
**1)**在Go扩展管理菜单中选择【配置扩展设置】:
**2)**从相关下拉列表中选择“golangci-lint”:
**3)**为了防止VS Code由于使用这个强大的linter而冻结,请添加--fast标志,如“编辑器集成”说明中所述。
--fast
为此,您需要导航到Go Extension配置页面(如步骤1所示),打开settings.json文件并添加相关配置,如以下屏幕截图所示:
settings.json
**NB!**以下是“golangci-lint”常见问题解答的一段引文:为什么第一次跑步时跑得很快?
因为第一次运行会缓存类型信息。所有后续运行都将很快。通常,此选项在本地计算机上的开发期间使用,并且已经执行了编译。
lnlaulya3#
您可以通过在函数名上方添加注解来解决此问题。示例如下:
//ArrayBasic1 is the function for calculating array func ArrayBasic1() { x := [5]int{1: 10, 2: 20, 3: 30} fmt.Println("value from arraybasic1", x) }
3条答案
按热度按时间egdjgwm81#
只需要在它上面添加一个注解,以你的类型(或函数,方法等)的名称开始,像这样:
这个linter错误是由于
Agent
类型被导出导致的,即使它的属性没有被导出。要不导出类型,请使用小写形式定义它,如下所示:你的linter抱怨这一点的原因是godoc使用那些注解来自动为你的项目生成文档。你可以在pkg.go.dev找到很多这样的Go项目的例子。
例如,如果你将一个Go项目上传到GitHub,pkg.go.dev将使用这些注解自动为你生成一个文档。您甚至可以添加可运行的代码示例和许多其他内容,如go-doc tricks所示。
lfapxunr2#
谁
此警告是由官方linter for Go源代码-golint产生的。Golint 被Visual Studio Code editor中的Go extension用作 default linter。
为什么
要理解 * 原因 * 为什么 golint 显示警告,我们可以参考与comments相关的官方Go文档-"Go Doc Comments"(引用):
程序中的每个导出(* 大写 *)名称都应该有一个文档注解。
但是如果你倾向于写自我文档化的代码(即,从 * 名称 * 本身等可以清楚地看出意图)。
解决方案
除了已经提出的solutions之外,你可以开始使用替代的更高级的golangci-lint,它是一个Go linters * 聚合器 *。默认情况下,它禁用了 golint,因此不会触发这个关于丢失 *doc注解 * 的恼人警告。当然,如果需要,可以使用相关的flags(参见
--exclude strings
和--exclude-use-default
)打开此警告。在Go扩展的描述页面上也提到了更改linter的可能性:
如何在VS Code中更改Go扩展的lint工具
要在VS Code中更改lint工具,请执行以下步骤。
**1)**在Go扩展管理菜单中选择【配置扩展设置】:
**2)**从相关下拉列表中选择“golangci-lint”:
**3)**为了防止VS Code由于使用这个强大的linter而冻结,请添加
--fast
标志,如“编辑器集成”说明中所述。为此,您需要导航到Go Extension配置页面(如步骤1所示),打开
settings.json
文件并添加相关配置,如以下屏幕截图所示:**NB!**以下是“golangci-lint”常见问题解答的一段引文:
为什么第一次跑步时跑得很快?
因为第一次运行会缓存类型信息。所有后续运行都将很快。通常,此选项在本地计算机上的开发期间使用,并且已经执行了编译。
lnlaulya3#
您可以通过在函数名上方添加注解来解决此问题。
示例如下: