07 Loops

Published Apr 24, 2023

GoProgrammingSwitchConditions

🧠 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 con range.
  • break, continue y labels 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

  1. Crea un programa que imprima los números del 1 al 10.
  2. Recorre un slice de strings ("Go", "Rust", "Python") y muestra índice y valor.
  3. Usa un bucle infinito que se detenga cuando el usuario escriba "salir" (puedes simularlo con una condición interna).
  4. Itera un string y muestra cada letra como string.
  5. 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.