06 Condicional SWITCH

Published Apr 24, 2023

GoProgrammingSwitchConditions

🧠 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últiples if-else.
  • Es ideal para comparaciones directas con muchos valores posibles.
  • Puedes agrupar casos, usar default para manejar lo inesperado y fallthrough si necesitas continuar.
  • También puedes usar switch sin expresión para casos más flexibles.

🛠️ Práctica recomendada

  1. 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.
  2. Usa fallthrough para imprimir "¡Sigue intentando!" si un número es 1 y quieres que también imprima el mensaje del 2.
  3. 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