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 sentencias switch normalmente ejecutan solo el caso coincidente y luego salen automáticamente. Sin embargo, la palabra clave fallthrough cambia este comportamiento al forzar que la ejecución continúe en el siguiente caso, independientemente de si coincide o no.
Cuando usas fallthrough al final de un caso, Go ejecutará el código del siguiente caso sin comprobar su condición. Esto es diferente a lenguajes como C, donde necesitas break para evitar que la ejecución pase al 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 sentencia fallthrough. Esto te permite ejecutar múltiples acciones relacionadas para un solo caso coincidente.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Desafío
FácilEn este desafío, practicarás el uso de la palabra clave fallthrough en una sentencia switch para crear un sistema de alerta de prioridad. Cuando se activa una alerta de alta prioridad, el sistema debe mostrar múltiples mensajes de advertencia en secuencia.
Recibirás una entrada de tipo string que representa un nivel de alerta. Crea una sentencia switch que maneje diferentes 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 sentencia switch debe funcionar de la siguiente manera:
- Para
"critical": Imprime "CRITICAL: System shutdown imminent!" y usa fallthrough para imprimir también el mensaje de alta prioridad. - Para
"high": Imprime "HIGH: Immediate attention required!" y usa fallthrough para imprimir también el mensaje de prioridad media. - Para
"medium": Imprime "MEDIUM: Please review when possible" - Para
"low": Imprime "LOW: Informational only"
Usa la palabra clave fallthrough para que las alertas críticas muestren tanto los mensajes de prioridad crítica como los de alta prioridad, y las alertas altas muestren tanto los mensajes de prioridad alta como los de prioridad media.
Hoja de referencia
La palabra clave fallthrough en las sentencias switch de Go obliga a que la ejecución continúe en el siguiente caso sin comprobar su condición:
grade := "B"
switch grade {
case "A":
fmt.Println("Excellent!")
fallthrough
case "B":
fmt.Println("Good job!")
fallthrough
case "C":
fmt.Println("Keep trying!")
}Cuando grade es "B", esto imprimirá tanto "Good job!" como "Keep trying!" debido a la sentencia fallthrough. A diferencia de lenguajes como C, las sentencias switch de Go finalizan automáticamente después de un caso coincidente a menos que se utilice fallthrough.
Pruébalo tú mismo
package main
import "fmt"
func main() {
// Leer 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 alerta
}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 comportamientos