Как исправить предупреждение линтера `Ошибка возврата значения не проверяется`? - PullRequest
0 голосов
/ 14 февраля 2019

Я вызываю метод со значением типа ошибки (foo () в примере кода).Мне плевать на этот результат.Как правильно писать стиль кода?Errcheck Линтер заставляет меня проверить эту ошибку.

//for example, same method may be called from imported entity
func foo() error {
   if err := someFunction(); err != nil {
       return err
   }
   return nil
}

func process() {
   //linter doesn't like this
   foo()

   //this way leads to unused variable error
   err := foo()

   //is this clean way?
   _ = foo()

  return 
}

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Да, присвоение его подстановочной переменной было бы хорошим способом игнорировать ошибку.Но вся практика (игнорирования ошибок) настоятельно не рекомендуется.Вот что «Effective Go» должен сказать по этому поводу:

Иногда вы увидите код, который отбрасывает значение ошибки, чтобы игнорировать ошибку;это ужасная практика.Всегда проверяйте ошибки возвращается;они предоставлены по причине.

   // Bad! This code will crash if path does not exist.
    fi, _ := os.Stat(path)
    if fi.IsDir() {
        fmt.Printf("%s is a directory\n", path)
    }
0 голосов
/ 14 февраля 2019

В идеале вы должны обработать ошибку, но если она вас раздражает, вы можете отключить линтер в Голанде (который вы должны использовать в любом случае):

enter image description here

0 голосов
/ 14 февраля 2019

Это идиоматический способ:

err := foo()
if err != nil {
  // handle your error here
}

Не следует пропускать возможную ошибку.Зарегистрируйте его или распечатайте на stdout, но не игнорируйте его.

...