Condicionales en Go: Uso de Switch vs If

Clase 16 de 36Curso Básico de Programación en Go

Contenido del curso

Resumen

Cuando trabajas con varias condiciones encadenadas usando if, el código se vuelve difícil de leer y mantener. En Go existe una estructura que resuelve exactamente ese problema: Switch. Permite evaluar múltiples casos de forma limpia y organizada, y conocer sus variantes te dará mayor control sobre el flujo de tus programas.

¿Cómo funciona switch con una condición específica?

La forma más directa de usar switch es pasarle una variable y definir los distintos case que quieres evaluar. Por ejemplo, para determinar si un número es par o impar se utiliza el operador módulo (%), que devuelve el residuo de una división [0:42].

go modulo := 4 % 2 switch modulo { case 0: fmt.Println("es par") default: fmt.Println("es impar") }

  • Se declara la palabra reservada switch seguida de la variable a evaluar.
  • Cada case representa un valor posible.
  • El bloque default se ejecuta cuando ninguno de los case anteriores se cumple.

Si el resultado de 4 % 2 es 0, imprime "es par". Si cambias el valor a 5, el módulo será 1 y entrará en el default, indicando que es impar [1:30].

¿Qué es la forma abreviada de switch?

Una variante muy común en código Go es declarar la variable directamente junto al switch, separándola con un punto y coma [2:07]:

go switch modulo := 4 % 2; modulo { case 0: fmt.Println("es par") default: fmt.Println("es impar") }

La primera parte (antes del ;) define la variable, y la segunda parte indica sobre qué valor se hará la evaluación. El comportamiento es idéntico, pero el código queda más compacto.

¿Cuándo usar switch sin condición?

Existe una tercera forma: switch sin ninguna condición explícita [2:30]. Esto es útil cuando necesitas evaluar expresiones más complejas sobre distintas variables, similar a encadenar varios if.

go value := 200 switch { case value > 100: fmt.Println("es mayor a 100") case value < 0: fmt.Println("es menor a 0") default: fmt.Println("no condición") }

  • Con value en 200, se cumple el primer caso y se imprime "es mayor a 100" [3:15].
  • Si cambias value a -10, entra en el segundo caso e imprime "es menor a 0" [3:30].
  • Si asignas 50, ningún caso se cumple: no es mayor a 100 ni menor a 0, así que ejecuta el default con "no condición" [3:50].

¿Cuál es la diferencia práctica entre ambas formas?

La elección depende del escenario:

  • Switch con condición: úsalo cuando conoces los valores posibles de una variable y quieres iterar sobre ellos. Es ideal para comparaciones directas de igualdad.
  • Switch sin condición: úsalo cuando necesitas evaluar expresiones booleanas más elaboradas, como comparar si un valor es mayor o menor que otro, tal como lo harías con bloques if encadenados.

¿Por qué siempre incluir default en switch?

El bloque default actúa como una red de seguridad. Garantiza que, sin importar el valor que reciba la variable, siempre habrá un camino de ejecución definido [1:15]. Es una buena práctica incluirlo en todos tus switch para evitar comportamientos inesperados y hacer el código más robusto.

Dominar estas tres variantes de switch en Go te permitirá escribir condicionales más legibles y fáciles de mantener. Si ya venías usando if para todo, prueba refactorizar con switch y comparte qué diferencias notas en la claridad de tu código.