Вебинар: Go-Go-Gadg...Error? Смотрим, как ошибаются Go разработчики! - 26.08
Анализатор обнаружил повторяющиеся условия в цепи инструкций if и else if. Код в повторяющемся условии никогда не будет выполнен, что сигнализирует об ошибке.
Рассмотрим пример:
if (a == 1) {
foo();
} else if (a == 2) {
bar();
} else if (a == 1) {
baz();
}
В данном примере вызов baz() является недостижимым, так как поток выполнения до него никогда не дойдёт. Вероятно, мы имеем дело с логической ошибкой, и корректный код должен выглядеть так:
if (a == 1) {
foo();
} else if (a == 2) {
bar();
} else if (a == 3) {
baz();
}
Учитываются также не идентичные, но эквивалентные выражения. Рассмотрим пример:
if (a & b) {
foo();
} else if (b & a) {
bar();
}
На данный код будет выдано предупреждение, так как операция побитового "И" является коммутативной, и результат окажется одинаковым.
Диагностическое правило классифицируется как:
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: