Saltar al contenido principal
eLearner.app
Módulo 2 · Lección 2 de 57/50 en el curso~10 min
Lecciones del módulo (2/5)

for: el único bucle

Go tiene una construcción de bucle único: for. Sin CÓDIGOPH1, no do-while, no foreach (que llega en la siguiente lección con CÓDIGOPH4). Una única palabra clave cubre todos los casos gracias a tres formularios.

Las tres formas de for

Formulario clásico de tres cláusulas

Idéntico a C/Java:

Go
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

i tiene un alcance limitado a for. Las tres cláusulas son opcionales (puedes omite cualquiera de ellos) pero el ; permanece si omites uno intermedio.

formulario "mientras": solo condición

En Go, while es simplemente un for con una única expresión bool:

Go
i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

Forma infinita

Sin cláusulas, el bucle nunca termina (a menos que break/return):

Go
for {
    if exitCondition() {
        break
    }
    doWork()
}

Es el patrón para bucles de manejo de eventos, servidores y políticas de reintento.

break, continue y etiquetas

break sale del bucle más interno, continue salta a la siguiente iteración:

Go
for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue       // salta i pari
    }
    if i > 7 {
        break          // ferma il ciclo
    }
    fmt.Println(i)     // 1 3 5 7
}

Para salir de los bucles anidados hay etiquetas (pocas pero útiles):

Go
Esterno:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i*j == 4 {
            break Esterno   // esce da entrambi
        }
    }
}

No hay operador , como en C

En Go no puedes escribir for i, j := 0, 10; i < j; i, j = i+1, j-1: la expresión de publicación no acepta asignaciones múltiples. Utilice Go sintaxis de asignación múltiple:

Go
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
    fmt.Println(i, j)
}

En cambio, esto funciona porque i, j = i+1, j-1 es un único asignación múltiple.

Pruébalo

Ejercicio#go.m2.l2.e1
Intentos: 0Cargando...

Imprime los números del 0 al 4 inclusive con un clásico de tres cláusulas para.

Cargando editor...
Mostrar pista

`for init; cond; post { ... }`: aquí el inicio es `i := 0`.

Solución disponible después de 3 intentos

Ejercicio#go.m2.l2.e2
Intentos: 0Cargando...

Suma el total de todos los números del 1 al 10 inclusive usando la forma "mientras" de for.

Cargando editor...
Mostrar pista

Forma 'mientras': `for <condition> { ... }`.

Solución disponible después de 3 intentos

Cuestionario#go.m2.l2.e3
Listo

¿Qué forma representa un bucle infinito en Go?

Go
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }
Opciones de respuesta

Resumen

  • Una única palabra clave for con tres formas: clásica, while, infinita.
  • break / continue opcionalmente con etiqueta para bucles anidados.
  • Etiqueta Name: antes de for, usado con moderación.
  • Sin , como operador: utilice la asignación múltiple i, j = ..., ....