Un bucle permite ejecutar un bloque de código de forma repetida y controlada. Cada ejecución del código del bloque del bucle se denomina iteración.
Un bucle comienza con la sentencia for
, y para controlar las iteraciones del bucle utilizamos una variable a modo de iterador, la cual se declara y se inicializa con un valor inicial. Después, se indica una condición que, mientras se cumpla, se ejecutará el bloque de código del bucle. Para que la variable cambie de valor en cada iteración, debe haber una asignación diferente, normalmente un incremento o un decremento.
Después de definir los parámetros de control del bucle, se especifica el código que ejecutará el bucle, encerrado entre llaves.
El siguiente ejemplo visualiza en pantalla una tabla de multiplicar, cuyo multiplicador va del 1 al 10:
var tabla int = 2 for i := 1; i <= 10; i++ { fmt.Printf("%d x %d = %d\n", tabla, i, tabla*i) }
La variable i
es el iterador del bucle. El iterador va cambiando de valor en cada iteración, mientras se cumpla la condición. Cuando deje de cumplirse la condición, se saldrá del bucle. En este caso, el iterador comienza con el valor 1. En cada iteración, el iterador se incrementará. Mientras el iterador sea menor o igual que 10, se irá ejecutando. Pero cuando llegue al valor 11, saldrá del bucle.
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 2 x 10 = 20
El siguiente ejemplo realizará una cuenta atrás, desde 100 hasta 0, de dos en dos:
for i := 100; i >= 0; i-=2 { fmt.Printf("%d, ", i) }
También podemos anidar bucles, es decir, definir y ejecutar un bucle dentro de otro. En el siguiente ejemplo, vamos a visualizar las tablas de multiplicar del 1 al 10, cada una de las tablas tendrá un multiplicador del 1 al 10:
for x := 1; x <= 10; x++ { for i := 1; i <= 10; i++ { fmt.Printf("%d x %d = %d\n", x, i, x*i) } }
Bucles for Vs bucles while
Go no contempla bucles while
como en otros lenguajes de programación. Sin embargo, es posible utilizar un bucle for
de la misma manera a como se utiliza un bucle while
var tabla int = 2 var i int = 1 for i <= 10 { // while i <= 10 fmt.Printf("%d x %d = %d\n", tabla, i, tabla*i) i++ }
El iterador (variable i
se declara e inicializa antes del bucle. En la declaración del bucle definimos únicamente la condición del bucle. Mientras (while
) se cumpla la condición, el bloque de código se repetirá. Por último, dentro del bloque debe haber algo que cambie el valor del iterador, para poder llegar a incumplir la condición y salir del bucle. En este caso, es el incrementador (i++
)
Sentencias break y continue
En los ejemplos vistos anteriormente, los bucles siguen una lógica lineal, es decir, que su ciclo de vida está ya definido y se puede predecir. Sin embargo, puede haber ocasiones en las cuales no sabremos cuándo hay que salir del bucle (puede ser en la primera iteración o en la número mil millones), o bien, podemos querer dejar de ejecutar el código del bucle y empezar una nueva iteración.
La sentencia break
permite romper la iteración del bucle, saliendo directamente de él.
La sentencia continue
deja de ejecutar el código del bucle, saltando directamente al inicio del bucle e iniciando una nueva iteración.
En el siguiente ejemplo vamos a crear un bucle infinito (no hay condición o la condición no se cumple nunca). Dentro de cada iteración va a solicitar al usuario que introduzca una palabra. Si la longitud de la palabra es menor de cinco caracteres se irá al inicio del bucle, omitiendo el resto del código del bucle e iniciando una nueva iteración. Si la longitud es mayor o igual de cinco caracteres, mostrará el mensaje "Tu palabra es: ", y repetirá la palabra introducida. Si la palabra introducida es "ok" (minúsculas) o "OK" (mayúsculas), saldrá del bucle.
var palabra string fmt.Println("Escribe una palabra que la repito") fmt.Println("Para salir, escribe 'OK'") // Bucle infinito for { fmt.Print("Dame palabra > ") fmt.Scanln(&palabra) if palabra == "OK" || palabra == "ok" { break // Sale del bucle } else if len(palabra) < 5 { continue // Inicio del bucle } else { fmt.Println(" Tu palabra es: ", palabra) } } fmt.Println("*** Fin del bucle ***")
El resultado es el siguiente:
Escribe una palabra que la repito Para salir, escribe 'OK' Dame palabra > ratón Tu palabra es: ratón Dame palabra > hola Dame palabra > vaso Dame palabra > mano Dame palabra > ordenador Tu palabra es: ordenador Dame palabra > teléfono Tu palabra es: teléfono Dame palabra > ok *** Fin del bucle ***
Enlaces de interés
- Go by Example - for: https://gobyexample.com/for
No hay comentarios:
Publicar un comentario