Switch con `fallthrough`
Parte de la sección Lógica y Flujo del Journey de GO de Coddy. Lección 1 de 68.
En Go, las instrucciones switch normalmente ejecutan solo el caso coincidente y después salen automáticamente. Sin embargo, la palabra clave fallthrough cambia este comportamiento al forzar que la ejecución continúe con el siguiente caso, independientemente de si coincide.
Cuando usas fallthrough al final de un caso, Go ejecutará el código del siguiente caso sin comprobar su condición. Esto es diferente de lenguajes como C, donde necesitas break para evitar que se continúe con el siguiente caso.
grade := "B"
switch grade {
case "A":
fmt.Println("Excellent!")
fallthrough
case "B":
fmt.Println("Good job!")
fallthrough
case "C":
fmt.Println("Keep trying!")
}En este ejemplo, si grade es "B", imprimirá tanto "Good job!" como "Keep trying!" debido a la instrucción fallthrough. Esto te permite ejecutar varias acciones relacionadas para un único caso coincidente.
Desafío
FácilEn este desafío, practicarás el uso de la palabra clave fallthrough en una instrucción switch para crear un sistema de alertas por prioridad. Cuando se active una alerta de alta prioridad, el sistema deberá mostrar varios mensajes de advertencia en secuencia.
Recibirás una entrada de cadena que representa un nivel de alerta. Crea una instrucción switch que gestione los distintos niveles de alerta y use fallthrough para mostrar mensajes en cascada para las alertas de mayor prioridad.
La entrada será uno de estos niveles de alerta: "critical", "high", "medium" o "low".
Tu instrucción switch debe funcionar de la siguiente manera:
- Para
"critical": Imprime "CRITICAL: System shutdown imminent!" y continúa hasta el caso high (que a su vez continúa hasta medium) - Para
"high": Imprime "HIGH: Immediate attention required!" y continúa para imprimir también el mensaje de prioridad medium - Para
"medium": Imprime "MEDIUM: Please review when possible" - Para
"low": Imprime "LOW: Informational only"
Como fallthrough encadena los casos, una alerta "critical" imprime tres líneas (CRITICAL, HIGH, MEDIUM), una alerta "high" imprime dos (HIGH, MEDIUM), y "medium" y "low" imprimen una línea cada una.
Pruébalo tú mismo
package main
import "fmt"
func main() {
// Lee la entrada
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: Escribe tu código a continuación
// Crea una sentencia switch con fallthrough para el sistema de alertas
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
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