Podsumowanie — zaawansowane sterowanie pętlami
Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 5 z 68.
Wyzwanie
ŁatwyW tym wyzwaniu połączysz instrukcje break z etykietami z switch i fallthrough, aby utworzyć system monitorowania bezpieczeństwa. System przeszukuje wiele stref bezpieczeństwa w poszukiwaniu zagrożeń i kategoryzuje je za pomocą kaskadowych poziomów alertów.
Otrzymasz dwa dane wejściowe:
- Ciąg znaków określający poziom zagrożenia, którego należy szukać (np.
"high") - Ciąg znaków określający maksymalną liczbę przeszukiwanych stref (np.
"3")
Otrzymujesz następujące dane dotyczące stref bezpieczeństwa:
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"}
}Twoje zadanie:
- Odczytaj poziom zagrożenia z pierwszego wejścia
- Odczytaj maksymalną liczbę przeszukiwanych stref z drugiego wejścia
- Użyj zagnieżdżonych pętli z etykietą dla
break, aby przeszukać strefy - Po znalezieniu docelowego poziomu zagrożenia wypisz
"Threat found at zone [zone_number] position [position]"i natychmiast zakończ obie pętle, używając etykiety dla instrukcji break - Po znalezieniu zagrożenia (lub jeśli nie zostanie ono znalezione) użyj instrukcji
switchzfallthrough, aby wyświetlić alerty bezpieczeństwa na podstawie szukanego poziomu zagrożenia
Instrukcja switch powinna działać następująco:
- Dla
"critical": wypisz "CRITICAL: Lockdown initiated!" i przejdź dalej, aby wypisać również alert o wysokim poziomie - Dla
"high": wypisz "HIGH: Security breach detected!" i przejdź dalej, aby wypisać również alert o średnim poziomie - Dla
"medium": wypisz "MEDIUM: Increased monitoring active" - Dla
"low": wypisz "LOW: Standard security protocols"
Jeśli zagrożenie nie zostanie znalezione po przeszukaniu określonej liczby stref, wypisz "Threat not found in searched zones" przed wyświetleniem alertów bezpieczeństwa. Użyj indeksowania od 0 dla numerów stref i pozycji w strefach.
Spróbuj swoich sił
package main
import (
"fmt"
"strconv"
)
func main() {
// Odczytaj dane wejściowe
var threatLevel string
var maxZonesStr string
fmt.Scanln(&threatLevel)
fmt.Scanln(&maxZonesStr)
// Przekonwertuj maksymalną liczbę stref na liczbę całkowitą
maxZones, _ := strconv.Atoi(maxZonesStr)
// Dane stref bezpieczeństwa
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"},
}
// TODO: Napisz swój kod poniżej
// Użyj zagnieżdżonych pętli z oznaczonym break, aby wyszukać zagrożenie
// Wypisz lokalizację zagrożenia, jeśli je znaleziono, lub "Threat not found in searched zones", jeśli go nie znaleziono
// Następnie użyj switch z fallthrough do obsługi alertów bezpieczeństwa
}Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowane sterowanie przepływem
Instrukcja switch z `fallthrough`Przerywanie zagnieżdżonych pętliKontynuowanie określonej pętliInstrukcja `goto`Podsumowanie — zaawansowane sterowanie pętlami4Projekt: Prosta lista zadań
Konfiguracja projektuDodawanie zadania2Struktury i metody
Definiowanie metod dla strukturOdbiorniki przez wartośćOdbiorniki przez wskaźnikWybór odbiornikówMetody a funkcjePodsumowanie — działanie struktur5Mapy w szczegółach
Mapy strukturWskaźniki jako wartości mapSprawdzanie, czy mapy są nilPorównywanie mapPodsumowanie — licznik częstości słów3Interfejsy (podstawy)
Czym jest interfejs?Definiowanie interfejsuImplementowanie interfejsuUżywanie typów interfejsowychPusty interfejsAsercje typuPrzełącznik typówPodsumowanie – kształty i zachowaniaPoćwicz samodzielnie: Kompilator Go online