[英]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 )
其中
First
和Second
确实具有相同的类型。 仅当没有为常量指定显式值时,才传递类型。因此,在用显式值声明枚举时,重要的是不要写
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.