Contenido del curso

Estructuras de Datos y Funciones

Sentencia switch en Go con ejemplos reales

Resumen

La sentencia switch en Go te permite ejecutar bloques de código según el valor de una variable, sin recurrir a cadenas largas de if/else. Si estás aprendiendo Go y buscas una forma más limpia de manejar decisiones, aquí verás cómo funciona con ejemplos prácticos usando enteros, días de la semana y horas del sistema.

¿Qué es la sentencia switch en Go y cuándo usarla?

A diferencia del for, el switch no es un ciclo: es una estructura de selección. Evalúa una variable y ejecuta el bloque del case que coincida con su valor. Es ideal cuando tienes varias rutas posibles para una misma variable y quieres mantener tu código legible.

¿Qué hace switch en Go? Compara el valor de una expresión contra varios case. Cuando encuentra coincidencia, ejecuta ese bloque. Si ninguno coincide, corre el bloque default.

¿Cómo se escribe un switch básico con una variable entera?

Dentro de la carpeta switch creas un archivo main.go con la estructura básica del paquete main. Declaras una variable i := 2, imprimes su valor inicial con fmt.Println("Escribe", i) y luego escribes la sentencia.

go switch i { case 1: fmt.Println(1) case 2: fmt.Println(2) case 3: fmt.Println(3) }

Al ejecutar go run main.go, si i vale 2, cae en el case 2. Si cambias la variable a 3, cae en el case 3. Un detalle útil: la coma dentro de Println actúa como separador y permite concatenar una cadena con un entero sin usar el signo de más.

¿Cómo usar switch con el paquete time para días de la semana?

Go trae el paquete time, que expone constantes como time.Saturday y time.Sunday. Estas son palabras reservadas del lenguaje, así que debes usarlas en inglés dentro del case.

go switch time.Now().Weekday() { case time.Saturday, time.Sunday: fmt.Println("A descansar") default: fmt.Println("Toca grabar más cursos en Platzi") }

Aquí time.Now().Weekday() devuelve el día actual del sistema. Si cae en sábado o domingo, imprime A descansar. Cualquier otro día activa el bloque default, que es la salida por defecto cuando ninguna condición se cumple. Si grabas un jueves, por ejemplo, te toca seguir trabajando.

¿Para qué sirve default en switch? Es el bloque que se ejecuta cuando ningún case coincide con el valor evaluado. Funciona como red de seguridad para cubrir todos los escenarios.

¿Puedo declarar la variable fuera del switch?

Sí, y a veces es más cómodo. En lugar de meter time.Now() dentro del switch, puedes guardarlo en una variable externa llamada tiempo y luego compararla. El comportamiento es idéntico, solo cambia la legibilidad.

go tiempo := time.Now() switch { case tiempo.Hour() < 12: fmt.Println("Debes decir buenos días") case tiempo.Hour() >= 12: fmt.Println("Buenas tardes") }

Este patrón se llama switch sin expresión: cada case contiene una condición booleana completa. Si la hora del equipo marca 12:01, imprime Buenas tardes. Si fueran las 9:00, imprimiría Buenos días.

¿Qué diferencia hay entre switch con expresión y switch sin expresión?

Las dos formas son válidas y se eligen según el caso de uso. La primera es más directa cuando comparas valores exactos; la segunda da flexibilidad para evaluar rangos o condiciones complejas.

  • Switch con expresión: evalúas una variable contra valores específicos, como en switch i con case 1, 2, 3.
  • Switch sin expresión: cada case es una condición booleana, útil para comparar rangos como horas o tamaños.
  • Case con múltiples valores: puedes agrupar valores separados por coma, como case time.Saturday, time.Sunday.

¿Cuándo uso switch en lugar de if/else? Cuando tienes tres o más caminos posibles para una misma variable. El switch mejora la lectura y reduce la repetición de comparaciones.

Reto: traducir los días de la semana al español

El método Weekday() devuelve los días en inglés porque son constantes del paquete time. El reto es usar un switch que reciba now.Weekday() y produzca como salida el nombre del día en español, como lunes, martes o miércoles. Es un buen ejercicio para combinar lo que viste sobre case múltiples y conversión de tipos.

Cuéntame en los comentarios cómo te fue con el ejercicio y qué estructura usaste para resolverlo.