Repaso: Control de bucles avanzado
Parte de la sección Lógica y Flujo del Journey de GO de Coddy. Lección 5 de 68.
Desafío
FácilEn este desafío, combinarás sentencias break etiquetadas con switch y fallthrough para crear un sistema de supervisión de seguridad. El sistema busca amenazas en varias zonas de seguridad y las categoriza con niveles de alerta en cascada.
Recibirás dos entradas:
- Una cadena que representa el nivel de amenaza que se debe buscar (por ejemplo,
"high") - Una cadena que representa el número máximo de zonas que se deben buscar (por ejemplo,
"3")
Se te proporcionan los siguientes datos de las zonas de seguridad:
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"}
}Tu tarea es:
- Analizar el nivel de amenaza de la primera entrada
- Analizar el número máximo de zonas que se deben buscar de la segunda entrada
- Usar bucles anidados con un
breaketiquetado para buscar en las zonas - Cuando encuentres el nivel de amenaza objetivo, imprimir
"Threat found at zone [zone_number] position [position]"y salir inmediatamente de ambos bucles usando un break etiquetado - Después de encontrar la amenaza (o si no se encuentra ninguna), usar una sentencia
switchconfallthroughpara mostrar alertas de seguridad según el nivel de amenaza que estabas buscando
La sentencia switch debe funcionar de la siguiente manera:
- Para
"critical": Imprimir "CRITICAL: Lockdown initiated!" y continuar con la impresión de la alerta alta - Para
"high": Imprimir "HIGH: Security breach detected!" y continuar con la impresión de la alerta media - Para
"medium": Imprimir "MEDIUM: Increased monitoring active" - Para
"low": Imprimir "LOW: Standard security protocols"
Si no se encuentra la amenaza después de buscar en el número especificado de zonas, imprimir "Threat not found in searched zones" antes de mostrar las alertas de seguridad. Usa índices basados en 0 para los números de zona y las posiciones dentro de las zonas.
Pruébalo tú mismo
package main
import (
"fmt"
"strconv"
)
func main() {
// Leer entrada
var threatLevel string
var maxZonesStr string
fmt.Scanln(&threatLevel)
fmt.Scanln(&maxZonesStr)
// Convertir el máximo de zonas a entero
maxZones, _ := strconv.Atoi(maxZonesStr)
// Datos de las zonas de seguridad
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"},
}
// TODO: Escribe tu código abajo
// Usa bucles anidados con break etiquetado para buscar la amenaza
// Imprime la ubicación de la amenaza si se encuentra, o "Threat not found in searched zones" si no se encuentra
// Luego usa switch con fallthrough para las alertas de seguridad
}Todas las lecciones de Lógica y Flujo
1Flujo de control avanzado
Switch con `fallthrough`Salir de bucles anidadosContinuar un bucle específicoLa sentencia `goto`Repaso: Control de bucles avanzado4Proyecto: Lista de tareas sencilla
Configuración del proyectoAñadir una tarea2Estructuras y Métodos
Definición de métodos en estructurasReceptores de valorReceptores de punteroElegir receptoresMétodos vs FuncionesResumen - Comportamiento de estructuras5Mapas en profundidad
Mapas de StructsPunteros como valores de MapVerificación de Maps NilComparación de MapsResumen - Contador de frecuencia de palabras3Interfaces (Conceptos básicos)
¿Qué es una interfaz?Definir una interfazImplementar una interfazUso de tipos de interfazInterfaz vacíaAserciones de tipoType SwitchResumen: Formas y comportamientosPractica por tu cuenta: Compilador de Go online