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 monitoreo de seguridad. El sistema busca a través de múltiples zonas de seguridad posibles amenazas y las categoriza con niveles de alerta en cascada.
Recibirás dos entradas:
- Una cadena que representa el nivel de amenaza a buscar (por ejemplo,
"high") - Una cadena que representa el número máximo de zonas a buscar (por ejemplo,
"3")
Se te proporcionan los siguientes datos de 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 a buscar de la segunda entrada
- Usar bucles anidados con un
breaketiquetado para buscar a través de las zonas - Cuando encuentres el nivel de amenaza objetivo, imprime
"Threat found at zone [zone_number] position [position]"y sal inmediatamente de ambos bucles usando el break etiquetado - Después de encontrar la amenaza (o si no se encuentra ninguna), usa una sentencia
switchconfallthroughpara mostrar alertas de seguridad basadas en el nivel de amenaza que estabas buscando
La sentencia switch debe funcionar de la siguiente manera:
- Para
"critical": Imprime "CRITICAL: Lockdown initiated!" y usa fallthrough para imprimir también la alerta high - Para
"high": Imprime "HIGH: Security breach detected!" y usa fallthrough para imprimir también la alerta medium - Para
"medium": Imprime "MEDIUM: Increased monitoring active" - Para
"low": Imprime "LOW: Standard security protocols"
Si no se encuentra la amenaza después de buscar en el número especificado de zonas, imprime "Threat not found in searched zones" antes de mostrar las alertas de seguridad. Usa indexación basada 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 comportamientos