07 Loops
Published Apr 24, 2023
🧠 Introducción
Un bucle (loop) te permite repetir un bloque de código mientras se cumpla una condición. En Go, la única palabra clave para bucles es for
, pero su diseño es tan flexible que puede cubrir desde bucles tipo for
, while
, foreach
e incluso bucles infinitos.
1. 🧱 Sintaxis del for
básico
La estructura clásica tiene tres componentes: inicialización, condición y post-instrucción.
for init; condition; post {
// Código que se ejecuta mientras la condición sea true
}
🧪 Ejemplo:
for i := 0; i < 5; i++ {
fmt.Println(i)
}
2. 📊 Múltiples variables en el bucle
Puedes declarar y modificar más de una variable al mismo tiempo.
for i, j := 0, 10; i < 5; i, j = i+1, j-1 {
fmt.Println(i, j)
}
3. 🕹️ for
sin init ni post
¿No necesitas inicializar ni incrementar nada? ¡No hay problema!
limit := 10
b := 0
for b <= limit {
fmt.Println(b)
b++
}
4. ♾️ Bucle infinito
Si omites la condición, tendrás un bucle infinito. Útil para programas que deben correr hasta que algo interno los detenga.
i := 0
for {
fmt.Println("Hola")
if i > 5 {
break
}
i++
}
5. 🧭 For-Range: Iterar colecciones
Usa range
para recorrer slices, arrays, strings, mapas y canales.
OS := []string{"iOS", "Android", "Windows"}
for i, v := range OS {
fmt.Println(i, v)
}
6. ✍️ Iterar strings con range
Recorres cada carácter (como rune
) y su posición.
for pos, char := range "GoLang" {
fmt.Printf("Posición: %d, Carácter: %c\n", pos, char)
}
¿Quieres los caracteres como strings?
for _, char := range "GoLang" {
fmt.Println(string(char))
}
7. 🛑 break
y continue
break
: sale del bucle.continue
: salta a la siguiente iteración.
for i := 0; i < 10; i++ {
if i == 5 {
break
}
if i%2 == 0 {
continue
}
fmt.Println(i)
}
8. 🧭 Labels con break
y continue
Cuando tienes bucles anidados, puedes usar etiquetas para controlar en cuál salir o continuar.
🔄 break
con label
Outerloop:
for i := 1; i <= 5; i++ {
for j := 1; j <= 5; j++ {
if i == 3 {
break Outerloop
}
fmt.Printf("%d * %d = %d\n", i, j, i*j)
}
}
🔁 continue
con label
Outerloop:
for i := 1; i <= 5; i++ {
for j := 1; j <= 5; j++ {
if i == 3 {
continue Outerloop
}
fmt.Printf("%d * %d = %d\n", i, j, i*j)
}
}
9. 🧪 for
como while
Aunque Go no tiene while
, puedes lograrlo usando solo la condición.
counter := 0
for counter < 5 {
fmt.Println(counter)
counter++
}
✅ Conclusión
- Go usa una sola palabra clave:
for
, pero con múltiples formas de uso. - Puedes crear bucles tipo
for
,while
, bucles infinitos o recorrer colecciones conrange
. break
,continue
ylabels
te dan control total sobre la ejecución.- Iterar strings con
range
te da acceso a cada carácter como rune (Unicode).
Con estos conocimientos, ya tienes lo necesario para repetir tareas y recorrer estructuras de datos en tus programas Go.
🛠️ Práctica recomendada
- Crea un programa que imprima los números del 1 al 10.
- Recorre un slice de strings (
"Go"
,"Rust"
,"Python"
) y muestra índice y valor. - Usa un bucle infinito que se detenga cuando el usuario escriba
"salir"
(puedes simularlo con una condición interna). - Itera un string y muestra cada letra como string.
- Usa
continue
para saltar los múltiplos de 3 entre 1 y 10.
🚀 Siguientes pasos
Con los bucles dominados, te recomiendo avanzar a:
- 🧩 Funciones en Go: cómo declarar, usar y reutilizar código.
- 🧱 Structs y tipos personalizados: cómo modelar objetos reales.
- 💬 Manejo de entradas del usuario y lectura desde consola.