English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
El bucle for en el lenguaje Go es una sentencia de control de repetición que nos permite escribir bucles que se ejecutan un número específico de veces. En el lenguaje Go, este bucle for se puede usar en diferentes formas, que incluyen:
1. Bucle for simpleusamos otros lenguajes de programación (por ejemplo, C, C ++similar en otros lenguajes de programación (como Java, C#, etc.).
Sintaxis:
for inicialización; condición; post{ // sentencias.... }
aquí,
eninicializaciónla sentencia (initialization) es opcional y se ejecuta antes de comenzar el bucle. La sentencia de inicialización siempre se encuentra en una simple sentencia, como declaración de variable, sentencia de incrementación o asignación o llamada a función.
la sentencia de condición (condition) contiene una expresión booleana que se calcula en el inicio de cada iteración del bucle. Si el valor de la sentencia de condición es true, se ejecuta el bucle.
la sentencia post se ejecuta después del cuerpo del bucle for. Después de la sentencia post, se vuelve a calcular el valor de la condición de la sentencia de condición para ver si es false, luego el bucle termina.
//usar bucle for package main import "fmt" //función principal func main() { // bucle for //este bucle comienza a ejecutarse cuando i = 0, hasta que i<4la condición es verdadera //la sentencia post es i++ for i := 0; i < 4; i++{ fmt.Printf("w3codebox\n") } }
Salida:
w3codebox w3codebox w3codebox w3codebox
2. Usar el bucle for como bucle infinito:si se eliminan todas las tres expresiones del bucle for, el bucle for también se puede usar como bucle infinito. Si el usuario no escribe una condición en el bucle for, significa que la condición es verdadera y el bucle entra en un bucle infinito.
Sintaxis:
for{ // sentencias... }
// usar bucle infinito package main import "fmt" func main() { // bucle infinito for { fmt.Printf("w3codebox\n") } }
Salida:
w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox ...........
3. Usar el bucle for como bucle while: el bucle for también se puede usar como bucle while. Ejecute este bucle hasta que la condición dada sea verdadera. Cuando el valor de la condición sea false, el bucle termina.
Sintaxis:
for condición{ //sentencia.. }
//el bucle for es similar al bucle while package main import "fmt" func main() { //bucle while //el bucle for se ejecuta hasta //i <3la condición es verdadera i:= 0 for i < 3 { i += 2 } fmt.Println(i) }
Salida:
4
4. Rango simple en el bucle for:también puededentro del bucle forusando rango.
Sintaxis:
for i, j := range rvariable{ // sentencia.. }
aquí,
i y j son variables de asignación de valores de iteración. También se denominan variables de iteración.
La segunda variable, es decir, j, es opcional.
La expresión de rango se evalúa una vez antes de comenzar el bucle.
package main import "fmt" func main() { //aquí rvariable es un array rvariable:= []string{"GFG", "Geeks", "w}3codebox"} //i y j almacenan el valor de rvariable //i almacena el índice del valor de la cadena individual //j almacena la cadena individual dada en el array for i, j := range rvariable { fmt.Println(i, j) } }
Salida:
0 GFG 1 Geeks 2 w3codebox
5. Para la cadena usar bucle for: El bucle for puede recorrer los puntos de código Unicode de la cadena.
Sintaxis:
for index, chr := range str{ // sentencia.. }
aquí, el índice es el que almacena UTF-8la variable que almacena el primer byte del código punto de la codificación, mientras quechr eses la variable que almacena los caracteres de la cadena dada, mientras questres una cadena.
package main import "fmt" func main() { // La cadena como rango en el bucle for: for i, j := range "XabCd" { fmt.Printf("%U el valor de la posición de índice es %d\n", j, i) } }
Salida:
U+0058 el valor de la posición de índice es 0 U+0061 el valor de la posición de índice 1 U+0062 el valor de la posición de índice 2 U+0043 el valor de la posición de índice 3 U+0064 el valor de la posición de índice 4
6. Para usar bucle for en map: El bucle for puede recorrermapla pareja de clave y valor.
Sintaxis:
for key, value := range map { // sentencia.. }
package main import "fmt" func main() { 22 33: "GFG", 44: "w3codebox", } for key, value := range mmap { fmt.Println(key, value) } }
Salida:
22 Geeks 33 GFG 44 w3codebox
7. Para el canal: El bucle for puede recorrer los valores ordenados enviados en el canal hasta que se cierre.
Sintaxis:
for item := range Chnl { // sentencia.. }
package main import "fmt" func main() { // Uso de canal chnl := make(chan int) go func() { chnl <- 100 chnl <- 1000 chnl <- 10000 chnl <- 100000 close(chnl) }() for i := range chnl { fmt.Println(i) } }
Salida:
100 1000 10000 100000
Punto importante:
No se utilizan corchetes en los tres statements del bucle for.
Los corchetes son obligatorios en el bucle for.
El corchete izquierdo debe estar en la misma línea que la declaración post.
Si el array, string, slice o conjunto map es vacío, el bucle for no lanzará un error y continuará su flujo. En otras palabras, si el array, string, slice o map es nil, el número de iteraciones del bucle for es cero.