06 Condicional SWITCH
Published Apr 24, 2023
🧠 Introducción
El switch
es otra forma poderosa y clara de tomar decisiones en Go. A menudo es más legible y eficiente que usar múltiples if-else
, especialmente cuando tienes que evaluar muchas opciones concretas.
🧩 ¿Cuándo usar switch
?
- Cuando tienes valores específicos que quieres comparar.
- Cuando quieres agrupar casos similares.
- Cuando quieres escribir menos código repetitivo.
📌 Sintaxis básica
switch expresión {
case valor1:
// Código si expresión == valor1
case valor2:
// Código si expresión == valor2
default:
// Código si no se cumple ningún caso
}
✅ Ejemplo simple
day := "Monday"
switch day {
case "Monday":
fmt.Println("Inicio de semana")
case "Friday":
fmt.Println("¡Ya casi es fin de semana!")
default:
fmt.Println("Otro día cualquiera")
}
⚙️ Comportamiento por defecto en Go
A diferencia de otros lenguajes como C o Java, en Go no necesitas break
. Cada case
se ejecuta y luego el programa sale automáticamente del switch
.
number := 2
switch number {
case 1:
fmt.Println("Uno")
case 2:
fmt.Println("Dos") // Solo se ejecuta este
case 3:
fmt.Println("Tres")
}
🧱 Caso default
Se ejecuta si ningún otro case
coincide, como un else
.
number := 5
switch number {
case 1:
fmt.Println("Uno")
case 2:
fmt.Println("Dos")
default:
fmt.Println("Número no reconocido")
}
🧑🤝🧑 Agrupación de casos
Puedes combinar varios valores en un solo case
.
letter := 'A'
switch letter {
case 'A', 'E', 'I', 'O', 'U':
fmt.Println("Vocal")
default:
fmt.Println("Consonante")
}
🔁 Usar fallthrough
para continuar
Por defecto, Go no continúa al siguiente case
, pero puedes forzarlo con fallthrough
.
number := 1
switch number {
case 1:
fmt.Println("Uno")
fallthrough
case 2:
fmt.Println("Dos") // Se ejecuta también, aunque no haya coincidencia
case 3:
fmt.Println("Tres")
}
Nota: fallthrough no evalúa la condición del siguiente case.
🚫 Switch sin expresión
También puedes usar switch
sin pasarle una expresión. En este caso, funciona como una serie de if-else if
.
number := 15
switch {
case number < 10:
fmt.Println("Menor que 10")
case number >= 10 && number <= 20:
fmt.Println("Entre 10 y 20")
default:
fmt.Println("Mayor que 20")
}
⚖️ switch
vs if
Característica | switch |
if |
---|---|---|
Claridad | Mejor para muchos casos | Mejor para condiciones complejas o rangos |
Agrupación | Permite fácilmente | No tan directo |
Continuación (fallthrough ) |
Permitido | No existe |
✅ Conclusión
- El
switch
es una alternativa clara y elegante al uso de múltiplesif-else
. - Es ideal para comparaciones directas con muchos valores posibles.
- Puedes agrupar casos, usar
default
para manejar lo inesperado yfallthrough
si necesitas continuar. - También puedes usar
switch
sin expresión para casos más flexibles.
🛠️ Práctica recomendada
- Escribe un programa que evalúe el valor de una variable
día
y:- Imprima "Inicio de semana" si es lunes.
- "Mitad de semana" si es miércoles.
- "Fin de semana" si es sábado o domingo.
- "Día normal" en otros casos.
- Usa
fallthrough
para imprimir "¡Sigue intentando!" si un número es 1 y quieres que también imprima el mensaje del 2. - Escribe un
switch
sin expresión que evalúe si un número está en diferentes rangos (menor que 0, entre 0 y 10, mayor que 10).
🚀 Siguientes pasos
Ahora que manejas bien los condicionales if
y switch
, es hora de pasar a:
- 🔁 Bucles (
for
): para repetir acciones. - 🧩 Funciones en Go: para reutilizar bloques de código.
- 📦 Estructuras (
struct
) y tipos personalizados