Вебинар: Go-Go-Gadg...Error? Смотрим, как ошибаются Go разработчики! - 26.08
Анализатор обнаружил ситуацию, когда в инструкции switch разные метки case содержат одинаковые фрагменты кода.
Такая ошибка может появиться, например, из-за копирования кода. Пример:
switch (selector) {
case "foo":
res = foo;
break;
case "bar":
res = bar;
break;
case "baz":
res = bar;
break;
}
Здесь в метке "baz" присваивается значение из переменной bar вместо baz. Исправленный вариант:
switch (selector) {
case "foo":
res = foo;
break;
case "bar":
res = bar;
break;
case "baz":
res = baz;
break;
}
Часто это предупреждение также свидетельствует об избыточном коде, который можно улучшить объединением меток. Пример с избыточным кодом:
switch (selector) {
case "fooX":
res = foo;
break;
case "fooY":
res = foo;
break;
case "barX":
res = bar;
break;
case "barY":
res = bar;
break;
}
Здесь нет ошибки, но этот код можно сделать читабельнее и компактнее за счёт объединения меток case:
switch (selector) {
case "fooX":
case "fooY":
res = foo;
break;
case "barX":
case "barY":
res = bar;
break;
}
Диагностическое правило классифицируется как:
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: