繁体   English   中英

golangci-lint 常量显式类型

[英]golangci-lint constant explicit type

我有一个关于 golangci-lint 的问题。 短绒使我返回类似的东西:

type outputFormat string

const (
    formatNone outputFormat = ""
    formatText              = "TEXT"
    formatJSON              = "JSON"
)

一个错误,如:

只有该组中的第一个常量具有显式类型(staticcheck)
formatNone outputFormat = ""

但它有什么问题呢? https://go101.org/article/constants-and-variables.html 中,他们在常量声明中的自动完成一章描述了不完整的常量将被识别和填充。

我没有找到任何参考资料告诉我避免使用不完整的常量定义。

有人可以向我解释一下,这背后有什么问题吗?

staticcheck文档中所述

在如下常量声明中:

 const ( First byte = 1 Second = 2 ) 

Second 具有相同的类型常量First 此构造不应与

 const ( First byte = iota Second ) 

其中FirstSecond确实具有相同的类型。 仅当没有为常量指定显式值时,才传递类型。

因此,在用显式值声明枚举时,重要的是不要写

 const ( EnumFirst EnumType = 1 EnumSecond = 2 EnumThird = 3 ) 

类型上的差异会导致各种令人困惑的行为和错误。

在我的情况下,我通过包含所有枚举项的类型解决了这个问题

type Verb string

const (
    DEL  Verb = "DEL"
    POST Verb = "POST"
    GET  Verb = "GET"
)

当我只在第一个枚举(DEL)上使用 puttig 动词时,我遇到了同样的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM