• 08/09/2024 2:47 AM

Sentencia Switch

porJesus Flores

Mar 2, 2021

Switch es básicamente un if de múltiples vías, como vimos con la sentencia if hay ocasiones donde le decimos a nuestro programa: si es verdadero esto haz , lo siguiente y es común tener una especie de else if, if else; para cuando existe un conjunto de casos y solo uno de ellos se ejecutará siempre y cuando coincida. La sentencia Switch contiene una etiqueta la cual es una variable a comprobarse, y esta etiqueta es comparada en cada en cada CASE, el código contenido dentro del CASE donde coincida la etiqueta se ejecutará.

switch x {
case 1:
    fmt.Printf("caso 1")
case 2:
    fmt.Printf("caso 2")
default:
    fmt.Printf("no existe caso")
}

En este ejemplo decimos switch x, siendo x la variable a verificar, posteriormente cada caso se asocia con un valor constante con el que se compara el valor contenido en x, si alguno de los casos coincide con el valor de x, se ejecuta el código contenido dentro de ese case. En este ejemplo si x es 1, se ejecutará solo el caso uno, si x fuese un 2, se ejecutará solo el caso dos, en caso de ser un valor diferente a 1 o 2 se ejecutará el código contenido dentro de la sentencia default, cabe aclarar que DEFAULT es una sentencia opcional, no es necesario que tenga un valor predeterminado nuestro case.

Es importante tener en cuenta, que si está acostumbrado a C por ejemplo existe una diferencia con Go, en el caso que se cumple y se ejecuta el código, el recorrido del caso se rompe automáticamente al final, es decir no necesitamos de alguna palabra reservada BREAK.
Por último, hablemos de otra manera de utilizar la sentencia switch, es posible utilizar switch sin tener una etiqueta a evaluar después de la palabra reservada switch. Es posible evaluar un conjunto de condiciones booleanas contenidas en cada caso dentro de nuestro switch, si alguna expresión es verdadera el bloque de sentencias contenidas dentro de ese case será ejecutada.

switch {
case x > 1:
    fmt.Printf("caso 1")
case x < -1:
    fmt.Printf("caso 2")
default:
    fmt.Printf("sin caso")      
}

Si el caso evaluado es falso, continuará a evaluar el siguiente caso para verificar si es true, si ninguno de los casos es true, ejecutara el bloque contenido en default. Este switch lo podemos utilizar en lugar de if else, if else if.

por Jesus Flores

Ingeniero de Software y Agile Coach

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *