En este módulo, aprenderemos sobre las estructuras de control en Go, que son fundamentales para dirigir el flujo de ejecución de un programa. Las estructuras de control incluyen condicionales, bucles y otras construcciones que permiten tomar decisiones y repetir acciones.
Contenido
Condicionales
Las estructuras condicionales permiten ejecutar diferentes bloques de código basados en ciertas condiciones.
if
y else
La estructura if
evalúa una condición y ejecuta un bloque de código si la condición es verdadera. La estructura else
se puede usar para ejecutar un bloque de código alternativo si la condición es falsa.
package main import "fmt" func main() { x := 10 if x > 5 { fmt.Println("x es mayor que 5") } else { fmt.Println("x es menor o igual a 5") } }
else if
La estructura else if
permite evaluar múltiples condiciones en secuencia.
package main import "fmt" func main() { x := 10 if x > 15 { fmt.Println("x es mayor que 15") } else if x > 5 { fmt.Println("x es mayor que 5 pero menor o igual a 15") } else { fmt.Println("x es menor o igual a 5") } }
Bucles
Los bucles permiten repetir un bloque de código varias veces. Go tiene una única estructura de bucle: for
.
for
El bucle for
en Go puede usarse de varias maneras.
Bucle clásico
Bucle tipo while
Bucle infinito
Switch
La estructura switch
permite seleccionar entre múltiples bloques de código basados en el valor de una expresión.
Ejemplo básico
package main import "fmt" func main() { day := "Tuesday" switch day { case "Monday": fmt.Println("Hoy es lunes") case "Tuesday": fmt.Println("Hoy es martes") default: fmt.Println("No es lunes ni martes") } }
Múltiples casos
package main import "fmt" func main() { day := "Saturday" switch day { case "Saturday", "Sunday": fmt.Println("Es fin de semana") default: fmt.Println("Es un día de semana") } }
Defer, Panic y Recover
Estas son construcciones avanzadas que permiten manejar la ejecución diferida y la recuperación de errores.
defer
La instrucción defer
pospone la ejecución de una función hasta que la función que la contiene termine.
package main import "fmt" func main() { defer fmt.Println("Esto se ejecutará al final") fmt.Println("Esto se ejecutará primero") }
panic
y recover
panic
se usa para lanzar un error y recover
se usa para manejarlo.
package main import "fmt" func main() { defer func() { if r := recover(); r != nil { fmt.Println("Recuperado del pánico:", r) } }() fmt.Println("Antes del pánico") panic("¡Algo salió mal!") fmt.Println("Esto no se ejecutará") }
Ejercicios Prácticos
Ejercicio 1: Condicionales
Escribe un programa que lea un número del usuario y determine si es positivo, negativo o cero.
package main import "fmt" func main() { var num int fmt.Print("Introduce un número: ") fmt.Scan(&num) if num > 0 { fmt.Println("El número es positivo") } else if num < 0 { fmt.Println("El número es negativo") } else { fmt.Println("El número es cero") } }
Ejercicio 2: Bucles
Escribe un programa que imprima los números del 1 al 10 usando un bucle for
.
Ejercicio 3: Switch
Escribe un programa que lea un día de la semana y determine si es un día laboral o un fin de semana.
package main import "fmt" func main() { var day string fmt.Print("Introduce un día de la semana: ") fmt.Scan(&day) switch day { case "Saturday", "Sunday": fmt.Println("Es fin de semana") default: fmt.Println("Es un día laboral") } }
Conclusión
En esta sección, hemos cubierto las estructuras de control en Go, incluyendo condicionales, bucles y la instrucción switch
. También hemos introducido las construcciones defer
, panic
y recover
para el manejo avanzado de la ejecución y errores. Estas herramientas son fundamentales para controlar el flujo de ejecución de tus programas y manejar situaciones excepcionales de manera efectiva. En el próximo módulo, exploraremos las funciones en Go, que te permitirán modularizar y reutilizar tu código de manera eficiente.
Curso de Programación en Go
Módulo 1: Introducción a Go
- Introducción a Go
- Configuración del Entorno de Go
- Tu Primer Programa en Go
- Sintaxis y Estructura Básica
Módulo 2: Conceptos Básicos
Módulo 3: Estructuras de Datos Avanzadas
Módulo 4: Manejo de Errores
Módulo 5: Concurrencia
Módulo 6: Temas Avanzados
Módulo 7: Desarrollo Web con Go
Módulo 8: Trabajando con Bases de Datos
Módulo 9: Despliegue y Mantenimiento
- Construcción y Despliegue de Aplicaciones Go
- Registro de Logs
- Monitoreo y Optimización de Rendimiento
- Mejores Prácticas de Seguridad