константа Голанчи-Линт явный тип - PullRequest
0 голосов
/ 21 марта 2019

У меня вопрос по поводу golangci-lint. Линтер возвращает меня за что-то вроде:

type outputFormat string

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

ошибка типа:

только первая константа в этой группе имеет явный тип (Staticcheck)
formatNone outputFormat = ""

Но в чем проблема? В https://go101.org/article/constants-and-variables.html они описывают в главе Автозаполнение в объявлениях констант , что неполные константы будут распознаны и заполнены.

Я не нашел ни одной ссылки, которая бы указала мне избегать использования неполных константных определений.

Может кто-нибудь объяснить мне, что за этим стоит?

1 Ответ

4 голосов
/ 21 марта 2019

Как объяснено в staticcheck документации для этой проверки :

В объявлении константы, например:

const (
     First byte = 1
     Second     = 2
)

константа Second имеет не того же типа, что и константа First. Эту конструкцию не следует путать с

const (
      First byte = iota
      Second
)

, где First и Second действительно имеют один и тот же тип. Тип передается только тогда, когда константе не назначено явное значение.

При объявлении перечислений с явными значениями важно не писать

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

Это несоответствие типов может привести к различным путаницам и ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...