Итоги: Продвинутое управление циклами
Часть раздела Логика и управление потоком путешествия по GO на Coddy — урок 5 из 68.
Задание
ЛегкоВ этом испытании вы объедините именованные операторы break с switch и fallthrough для создания системы мониторинга безопасности. Система выполняет поиск угроз в нескольких зонах безопасности и классифицирует их с помощью каскадных уровней оповещения.
Вы получите два входных значения:
- Строку, представляющую уровень угрозы для поиска (например,
"high") - Строку, представляющую максимальное количество зон для поиска (например,
"3")
Вам предоставлены следующие данные о зонах безопасности:
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"}
}Ваша задача:
- Получить уровень угрозы из первого входного значения
- Получить максимальное количество зон для поиска из второго входного значения
- Использовать вложенные циклы с именованным
breakдля поиска по зонам - При обнаружении целевого уровня угрозы вывести
"Threat found at zone [zone_number] position [position]"и немедленно выйти из обоих циклов, используя именованный break - После нахождения угрозы (или если угроза не найдена), использовать оператор
switchсfallthroughдля отображения оповещений безопасности на основе уровня угрозы, который вы искали
Оператор switch должен работать следующим образом:
- Для
"critical": Вывести "CRITICAL: Lockdown initiated!" и перейти (fall through) к выводу оповещения высокого уровня - Для
"high": Вывести "HIGH: Security breach detected!" и перейти (fall through) к выводу оповещения среднего уровня - Для
"medium": Вывести "MEDIUM: Increased monitoring active" - Для
"low": Вывести "LOW: Standard security protocols"
Если угроза не найдена после поиска в указанном количестве зон, выведите "Threat not found in searched zones" перед отображением оповещений безопасности. Используйте индексацию с нуля для номеров зон и позиций внутри зон.
Попробуйте сами
package main
import (
"fmt"
"strconv"
)
func main() {
// Чтение входных данных
var threatLevel string
var maxZonesStr string
fmt.Scanln(&threatLevel)
fmt.Scanln(&maxZonesStr)
// Преобразование максимального количества зон в целое число
maxZones, _ := strconv.Atoi(maxZonesStr)
// Данные зон безопасности
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"},
}
// TODO: Напишите свой код ниже
// Используйте вложенные циклы с именованным break для поиска угрозы
// Выведите местоположение угрозы, если она найдена, или "Threat not found in searched zones", если не найдена
// Затем используйте switch с fallthrough для оповещений безопасности
}Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком выполнения
Switch с использованием `fallthrough`Выход из вложенных цикловПродолжение конкретного циклаОператор `goto`Итоги: Продвинутое управление циклами4Проект: Простой список задач
Настройка проектаДобавление задачи2Структуры и методы
Определение методов для структурПолучатели по значениюПолучатели по указателюВыбор типа получателяМетоды против функцийИтоги: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картИтоги: счетчик частоты слов3Интерфейсы (Основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование интерфейсных типовПустой интерфейсУтверждение типаПереключатель типовИтоги: Фигуры и поведение