Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V8017. The conditions of two adjacent 'if' statements are equivalent.

03 Апр 2026

Анализатор обнаружил код, в котором рядом находятся две конструкции if с одинаковыми условиями. Это является потенциальной ошибкой или избыточным кодом.

func Logging(s1 *string, s2 *string) {
  if s1 != nil {
    fmt.Println(*s1)
  }
  if s1 != nil {
    fmt.Println(*s2)
  }
}

Этот код содержит ошибку во втором условии. В нём повторно проверяется переменная s1, а необходимо проверить переменную s2.

Исправленный вариант:

func Logging(s1 *string, s2 *string) {
  if s1 != nil {
    fmt.Println(*s1)
  }
  if s2 != nil {
    fmt.Println(*s2)
  }
}

Диагностическое правило не всегда указывает на ошибку. Код может быть избыточен:

func Logging2(toFile bool, s1 string, s2 string) {
  if toFile {
    fmt.Println(s1)
  }
  if toFile {
    fmt.Println(s2)
  }
}

Этот код корректен, но он немного неэффективен, так как два раза приходится проверять значение одной и той же логической переменной. Его можно переписать:

func Logging2(toFile bool, s1 string, s2 string) {
  if toFile {
    fmt.Println(s1)
    fmt.Println(s2)
  }
}

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V8017.