Sebastian Gomez
Condicionales en Go
Los condicionales en Go son una forma de controlar el flujo de un programa. Puedes usar if, else, else if y switch para determinar qué instrucciones se ejecutan según ciertas condiciones. Veamos cada estructura paso a paso.
If, Else y Else If
Los condicionales "if / else if" son una forma de tomar decisiones en programación. Funcionan de la siguiente manera:
- Se inicia con un
ifque evalúa una condición. Si la condición es verdadera, se ejecuta el bloque de código asociado a eseif. - Si la condición del primer
ifes falsa, se pasa al siguienteelse if(si lo hay). Se evalúa su condición y, si es verdadera, se ejecuta el bloque de código asociado a eseelse if. - Este proceso se repite para cada
else ifen secuencia hasta encontrar una condición verdadera o hasta que no haya máselse if. Cuando se encuentra una condición verdadera, se ejecuta su bloque de código y se sale de la estructura condicional. - Si ninguna de las condiciones
ifoelse ifes verdadera, se ejecuta el bloque de código delelse(si está presente), que es el último recurso.
Veamos un primer ejemplo, un condicional que evalúe si una variable es mayor que el número 10:
package main
import "fmt"
func main() {
var x int = 11
if x > 10 {
fmt.Println("x es mayor a 10")
} else {
fmt.Println("x no es mayor a 10")
}
}Fíjate en el mensaje del else: como esta rama se ejecuta siempre que la condición x > 10 es falsa, también cubre el caso en que x es exactamente 10. Por eso decimos "x no es mayor a 10" y no "x es menor a 10", que dejaría fuera al valor 10.
A diferencia de otros lenguajes, en Go los condicionales no requieren paréntesis alrededor de la condición a evaluar. En cambio, la llave { que abre el bloque es obligatoria y debe ir en la misma línea que la condición. Si la pones en la línea siguiente, el código no compila.
Veamos ahora un ejemplo de if / else if, donde puedo añadir tantos casos como desee mediante la sintaxis else if:
func ejemploIfElseIf() {
var x int = 11
if x > 10 {
fmt.Println("x es mayor a 10")
} else if x == 10 {
fmt.Println("x es igual a 10")
} else {
fmt.Println("x es menor a 10")
}
}Switch en Go
La estructura switch es una forma de control de flujo que permite simplificar múltiples comparaciones de una variable contra diferentes valores. Funciona de la siguiente manera:
- Inicio de switch: la estructura comienza con la palabra clave
switch, seguida de la variable o expresión que quieres comparar. - Casos (case): dentro del bloque de
switchdefines diferentes casos con la palabra clavecase, seguida de un valor específico que quieres comparar con la variable o expresión delswitch. Si la variable o expresión coincide con el valor delcase, se ejecuta el bloque de código asociado a esecase. - Ejecución de un caso: cuando se encuentra una coincidencia entre la variable y un
case, se ejecuta el código asociado a esecasey luego se sale de la estructuraswitch. Esto significa que solo se ejecuta el código de uncasecoincidente. - Break: aunque en algunos lenguajes es necesario usar la palabra clave
breakal final de cada bloquecasepara evitar que el control fluya hacia el siguiente, en lenguajes modernos como Go elbreakes implícito y no hace falta escribirlo. Si quieres el comportamiento contrario, es decir, que la ejecución continúe en elcasesiguiente, puedes usar de forma explícita la palabra clavefallthrough. - default: puedes incluir un
defaultal final delswitch, que se ejecuta si ninguno de loscasecoincide. Es similar a unelseen una estructuraif / else.
Ejemplo de switch:
func ejemploSwitch() {
var x int = 11
switch x {
case 1:
fmt.Println("x es 1")
case 2:
fmt.Println("x es 2")
case 3:
fmt.Println("x es 3")
case 4:
fmt.Println("x es 4")
case 5:
fmt.Println("x es 5")
case 6:
fmt.Println("x es 6")
case 7:
fmt.Println("x es 7")
case 8:
fmt.Println("x es 8")
case 9:
fmt.Println("x es 9")
case 10:
fmt.Println("x es 10")
default:
fmt.Println("x es mayor a 10")
}
}Ejemplo de switch / case con intervalos:
func ejemploSwitchRango() {
var numeroMes int = 3
var estacion string
switch {
case numeroMes >= 1 && numeroMes < 3:
estacion = "Invierno"
case numeroMes >= 3 && numeroMes < 6:
estacion = "Primavera"
case numeroMes >= 6 && numeroMes < 9:
estacion = "Verano"
case numeroMes >= 9 && numeroMes < 12:
estacion = "Otoño"
default:
estacion = "Ninguna estación del año!"
}
fmt.Println(estacion)
}Ejemplo de switch / case con cadenas de caracteres:
func ejemploSwitchConTexto() {
var x string = "def"
// Evalúa el valor de la variable 'x' en una estructura 'switch'
switch x {
// Si 'x' es igual a "abc"
case "abc":
// Imprime en la consola el mensaje "x es abc"
fmt.Println("x es abc")
case "def":
// Imprime en la consola el mensaje "x es def"
fmt.Println("x es def")
// Si 'x' no es igual a "abc" ni a "def"
default:
// Imprime en la consola el mensaje "x es otra cadena"
fmt.Println("x es otra cadena")
}
}Ejercicios propuestos
Practica con estos ejercicios de condicionales en Go y envía la solución como un Pull Request a este repositorio: Go Para Principiantes.
Nota: verificar que la URL del repositorio "Go Para Principiantes" sea la correcta y que siga publicada antes de difundir el post. verify
10 ejercicios de condicionales en Go:
- Imprime un mensaje diferente dependiendo de si un número es par o impar.
- Dados dos números enteros, imprime el mayor de los dos.
- Dados tres números enteros, imprime el mayor de los tres.
- Imprime un mensaje diferente si un número es positivo o negativo.
- Lee un número entero y determina si es divisible entre 5.
- Lee un número entero y determina si es divisible entre 3 y 5 al mismo tiempo.
- Lee dos números enteros y determina si el primero es mayor que el segundo.
- Lee tres números enteros y determina si el primero es igual al segundo y al tercero.
- Lee dos números enteros y determina si el primero es menor que el segundo o si son iguales.
- Lee un número entero y determina si es par o impar y si es positivo o negativo.
10 ejercicios de switch en Go:
- Imprime un mensaje diferente dependiendo de si un número está entre 0 y 5, entre 5 y 10, entre 10 y 20, o es mayor que 20.
- Dados dos números enteros, imprime la letra correspondiente a la calificación apropiada.
- Dados tres números enteros, imprime la letra correspondiente a la calificación apropiada.
- Lee un número entero y determina la clase de número que es.
- Lee un número entero entre 0 y 5 y determina a qué letra corresponde.
- Lee un número entero entre 5 y 10 y determina a qué letra corresponde.
- Lee un número entero entre 10 y 20 y determina a qué letra corresponde.
- Lee un número entero mayor que 20 y determina a qué letra corresponde.
- Lee un número entero y determina si es par o impar y si es positivo o negativo.
- Lee un número entero y determina si es divisible entre 2, 3, 4, 5 o 6.
Resumen en 3 puntos
- Los condicionales en Go (
if,else,else if) permiten controlar el flujo de un programa según una o varias condiciones, sin paréntesis alrededor de la condición pero con la llave de apertura obligatoria en la misma línea. - La sentencia
switchen Go facilita comparar una variable contra múltiples expresiones y ejecuta el bloque asociado a la coincidencia; elbreakes implícito yfallthroughte permite continuar en el siguientecasecuando lo necesitas. - Practicar con ejercicios de condicionales y
switchen Go te ayuda a mejorar el control del flujo de tus programas y a comprender mejor cómo tomar decisiones basadas en condiciones y expresiones.
Ahora que has aprendido sobre condicionales y switch en Go, es hora de poner en práctica tus habilidades. Trabaja en los ejercicios mencionados y envía tus soluciones como Pull Requests al repositorio Go Para Principiantes.
Eso es todo, espero que este post te sea de utilidad y lo puedas aplicar a algún proyecto que tengas en mente. Déjame un comentario si te sirvió o si tienes alguna duda, y recuerda que si te gustó también puedes compartirlo usando los links a las redes sociales aquí abajo. Buena suerte y diviértete programando en Go.
Sebastian Gomez
Creador de contenido principalmente acerca de tecnología.