Récapitulatif - Contrôle de boucle avancé
Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 5 sur 68.
Défi
FacileDans ce défi, vous allez combiner des instructions break étiquetées avec switch et fallthrough pour créer un système de surveillance de sécurité. Le système effectue des recherches dans plusieurs zones de sécurité pour trouver des menaces et les classe avec des niveaux d'alerte en cascade.
Vous recevrez deux entrées :
- Une chaîne de caractères représentant le niveau de menace à rechercher (par exemple,
"high") - Une chaîne de caractères représentant le nombre maximum de zones à fouiller (par exemple,
"3")
Les données des zones de sécurité suivantes vous sont fournies :
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"}
}Votre tâche consiste à :
- Analyser le niveau de menace à partir de la première entrée
- Analyser le nombre maximum de zones à fouiller à partir de la deuxième entrée
- Utiliser des boucles imbriquées avec un
breakétiqueté pour effectuer la recherche dans les zones - Lorsque vous trouvez le niveau de menace cible, affichez
"Threat found at zone [zone_number] position [position]"et quittez immédiatement les deux boucles en utilisant le break étiqueté - Après avoir trouvé la menace (ou si aucune menace n'est trouvée), utilisez une instruction
switchavecfallthroughpour afficher les alertes de sécurité basées sur le niveau de menace que vous recherchiez
L'instruction switch doit fonctionner comme suit :
- Pour
"critical": Affichez "CRITICAL: Lockdown initiated!" et passez à l'instruction suivante (fall through) pour afficher également l'alerte high - Pour
"high": Affichez "HIGH: Security breach detected!" et passez à l'instruction suivante (fall through) pour afficher également l'alerte medium - Pour
"medium": Affichez "MEDIUM: Increased monitoring active" - Pour
"low": Affichez "LOW: Standard security protocols"
Si la menace n'est pas trouvée après avoir fouillé le nombre de zones spécifié, affichez "Threat not found in searched zones" avant d'afficher les alertes de sécurité. Utilisez une indexation basée sur 0 pour les numéros de zone et les positions à l'intérieur des zones.
Essayez vous-même
package main
import (
"fmt"
"strconv"
)
func main() {
// Lire l'entrée
var threatLevel string
var maxZonesStr string
fmt.Scanln(&threatLevel)
fmt.Scanln(&maxZonesStr)
// Convertir le nombre maximum de zones en entier
maxZones, _ := strconv.Atoi(maxZonesStr)
// Données des zones de sécurité
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"},
}
// TODO: Écrivez votre code ci-dessous
// Utilisez des boucles imbriquées avec une instruction break étiquetée pour rechercher la menace
// Affichez l'emplacement de la menace si elle est trouvée, ou "Threat not found in searched zones" si elle n'est pas trouvée
// Ensuite, utilisez switch avec fallthrough pour les alertes de sécurité
}Toutes les leçons de Logique & Flux
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportements