English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Golang

Sentencias de control en Golang

Funciones y métodos en Golang

Estructuras en Golang

Cortes y arreglos en Golang

Cadenas (String) en Golang

Punteros en Golang

Interfaces en Golang

Concurrencia en Golang

Excepciones de Golang (Error)

Otras cosas de Golang

Sentencias de bucle en el lenguaje Go (bucle for)

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.