Практика
Применение изученных концепций для решения реальных задач программирования.
Что изучим
- Валидация пользовательского ввода
- Работа с рунами и Unicode символами
- Проверка строк по критериям безопасности
- Итерация через for range по символам
- Комбинирование условных конструкций и циклов
- Использование пакетов unicode и strings
Основные концепции
Валидация паролей: проверка соответствия строки набору критериев безопасности. Включает проверку минимальной длины, наличия заглавных/строчных букв, цифр и специальных символов. Реализуется через итерацию по рунам с установкой булевых флагов при обнаружении каждого типа символа.
Работа с рунами: использование for range для корректного обхода Unicode символов. Пакет unicode предоставляет функции IsUpper, IsLower, IsDigit для классификации символов. Пакет strings содержит ContainsRune для проверки наличия символа в строке спецсимволов.
Булевы флаги: переменные типа bool для отслеживания выполнения каждого критерия. Инициализируются как false, устанавливаются в true при обнаружении соответствующего символа. После цикла проверяются через if-else для формирования отчёта.
Подсчёт выполненных критериев: счётчик увеличивается на 1 за каждый выполненный критерий. Позволяет дать пользователю количественную оценку надёжности пароля. Все 5 критериев — надёжный пароль, меньше — слабый.
Пользовательский отчёт: детализированный вывод для каждого невыполненного критерия с символом ❌ и описанием проблемы. Итоговое сообщение зависит от выполнения всех критериев. Помогает пользователю понять, что именно нужно исправить.
Константы vs переменные: минимальная длина и список спецсимволов можно объявить как константы, если они не изменяются. Упрощает дальнейшую модификацию правил валидации в одном месте.
Комбинирование конструкций: задача объединяет циклы, условия, работу со строками, пакеты unicode/strings. Демонстрирует применение всех базовых концепций Go для решения практической задачи обеспечения безопасности.