Условия и логические операции
Освоение условных конструкций, операторов сравнения и логических выражений для управления потоком выполнения программы.
Что изучим
- Операторы сравнения: равенство, неравенство, больше, меньше
- Условная конструкция if
- Конструкция if-else для альтернативных сценариев
- Цепочки else if для множественных условий
- Логические операторы: И, ИЛИ, НЕ
- Тернарный оператор и его отсутствие в Go
Основные концепции
Операторы сравнения: возвращают bool значение true или false. Работают с числовыми типами, строками, bool. Сравнивать можно только переменные одного типа — для разных типов требуется явное приведение.
Особенности float: из-за особенностей двоичного представления сравнение через == ненадёжно. Для проверки равенства используйте epsilon — допустимую погрешность вычислений. Проверяйте разницу через math.Abs(a - b) < epsilon.
Конструкция if: выполняет блок кода только если условие истинно. Фигурные скобки обязательны даже для одной строки. Условие без скобок — в отличие от C/Java/JavaScript.
if-else: выполняет один из двух блоков в зависимости от условия. else должно находиться на той же строке, что закрывающая скобка if. Перенос else на новую строку вызовет ошибку компиляции.
else if: проверяет несколько условий последовательно. Выполняется первый истинный блок, остальные пропускаются. Порядок условий важен — начинайте с более специфичных, заканчивайте общими.
Guard clauses: ранний выход из функции при невыполнении условий. Снижает вложенность, улучшает читаемость. Вместо глубокого if-else проверяйте ошибочные случаи и возвращайтесь досрочно.
| Логические операторы: && (И) требует истинности обоих операндов, | (ИЛИ) истинен если хотя бы один операнд истинен, ! (НЕ) инвертирует значение. Используют короткое замыкание — второй операнд не вычисляется если результат известен по первому. |