Switch

Clase 9 de 42Curso Práctico de Go: Creación de un Servidor Web

Contenido del curso

Construyendo un Servidor Web

Resumen

Cuando tu programa necesita tomar decisiones entre más de dos opciones, el uso de múltiples bloques if se vuelve tedioso y difícil de mantener. Go ofrece una estructura llamada switch que simplifica este tipo de lógica, y aquí se demuestra paso a paso cómo implementarla para soportar las cuatro operaciones aritméticas básicas en una calculadora.

¿Por qué el if no es suficiente para manejar múltiples condiciones?

En versiones anteriores del programa, la calculadora solo soportaba la suma. Todo el flujo consistía en leer el input, hacer split, convertir los valores con Atoi y sumar los operandos [0:12]. Cuando se necesita agregar la resta, basta con cambiar el operador y añadir un else para manejar el segundo caso [1:22].

Sin embargo, al incorporar una tercera operación como la multiplicación, el panorama cambia. Encadenar un if por cada operación aritmética genera código repetitivo y frágil [2:15]. Es aquí donde entra el switch, una estructura de control diseñada para evaluar múltiples condiciones sobre un mismo valor.

¿Cómo funciona la sintaxis del switch en Go?

La estructura se declara con la palabra reservada switch seguida de la variable que se quiere evaluar. Dentro de las llaves, se definen bloques case para cada valor posible [2:50].

go switch operador { case "+": fmt.Println(operadorUno + operadorDos) case "-": fmt.Println(operadorUno - operadorDos) case "*": fmt.Println(operadorUno * operadorDos) case "/": fmt.Println(operadorUno / operadorDos) default: fmt.Println("Operador no está soportado") }

Cada case se lee de forma natural: "en el caso de que operador sea +, ejecuta este bloque de código" [3:05]. La sintaxis es más limpia y escalable que una cadena de if-else.

¿Qué es el caso default y cuándo se ejecuta?

El bloque default funciona como una red de seguridad. Se ejecuta únicamente cuando ninguno de los casos anteriores hace match con el valor evaluado [6:20]. Por ejemplo, si un usuario introduce la letra "P" como operador, ningún case coincide y el programa imprime "operador no está soportado" [6:50].

¿Cuál es el error común al cambiar de operador?

Un detalle importante aparece al probar la resta después de haber configurado el asterisco como operador en el split [4:10]. Si el programa hace split con * pero el usuario envía 8-4, el split no encuentra el carácter esperado y devuelve una lista con un solo elemento. Al intentar acceder al segundo valor, se produce un error de índice fuera de rango en tiempo de ejecución [4:30].

La solución es asegurarse de que el operador utilizado en el split coincida con la operación que se desea realizar [5:00]. Este tipo de errores refuerza la importancia de mantener consistencia entre la lógica de separación del input y la operación aritmética seleccionada.

¿Cuándo usar if y cuándo usar switch?

La recomendación es clara:

  • If: ideal para decisiones binarias, que son la mayoría de los casos en programación cotidiana.
  • Switch: recomendable cuando una variable puede tomar múltiples valores posibles, como seis o siete opciones distintas [7:10].
  • Default: siempre debe incluirse para manejar valores inesperados y evitar comportamientos no controlados.

El refactor realizado al inicio, donde se extrajo el operador a una variable independiente en lugar de dejarlo hardcoded [0:38], es una buena práctica que facilita la lectura y el mantenimiento del código. Cambiar el operador en un solo lugar es mucho más seguro que buscarlo en múltiples líneas.

Con esta implementación, la calculadora soporta sumas, restas, multiplicaciones y divisiones dentro de un switch limpio y extensible. Si necesitas agregar una nueva operación en el futuro, basta con añadir un nuevo case. ¿Qué operación adicional te gustaría implementar?