
Баг: Ошибка приоритета со сравнениями
Сравнения имеют высший приоритет, но иногда нужно сгруппировать по-другому.
// Ты хочешь: проверить, что a находится между 10 и 20
a := 15
// ❌ ОШИБКА (так в математике можно, в Go - нет)
if 10 < a < 20 { // Не скомпилируется! Нельзя цепочкой
// ✅ ПРАВИЛЬНО
if 10 < a && a < 20 {
fmt.Println("a в интервале")
}Другой пример - смешивание с && и ||:
x := 5
y := 10
// Ты хочешь: x равен 5 ИЛИ x равен 6, и при этом y больше 5
// ❌ ОШИБКА (логическая)
if x == 5 || x == 6 && y > 5 {
// Из-за приоритета: x == 5 || (x == 6 && y > 5)
// При x=5, y=1: 5==5 || ... = true, хотя y не больше 5!
}
// ✅ ПРАВИЛЬНО (скобки)
if (x == 5 || x == 6) && y > 5 {
fmt.Println("Все условия выполнены")
}Загрузка...