Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61

Deprecated: substr(): Passing null to parameter #1 ($string) of type string is deprecated in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61
Bucles
Source Code

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/main/articles.php on line 18

Bucles


Tiempo de lectura: 1 minutos

Solo hay una sentencia para bucles, pero tiene todas las formas posibles



Solo condición de salida

En esta forma, la inicialización y el control del incremento se realizan de forma manual, el bucle se limita a la condición. Es similar a un bucle while.

func main(){
  var i = 0
  for i < 10 {
    fmt.Println("Valor de i:", i)
    i++
  }
}

Inicialización, condición e incremento

Forma común con inicialización e incremento en la definición del bucle

func main(){
  var i int
  for i = 0 ; i < 10; i++ {
    fmt.Println("Valor de i:", i)
  }
}

Rango

Si utilizamos una estructura que se pueda enumerar, el control del bucle viene dado por la estructura de datos. Nos devuelve el índice y contenido para cada vuelta.

func main(){
	array:=[7]int{0,1,4,6,10,9}
	
	for i, j:= range array{
		fmt.Printf("Valor de j: %d en índice #%d\n", j, i)
	}
}

Rango simplificado

Esta forma es la misma que la anterior pero prescindiendo del índice

func main(){
	array:=[7]int{0,1,4,6,10,9}

	for i:= range array{
		fmt.Printf("Valor de i: %d\n", i)
	}
}

Infinito

Bucle infinito

for {
	
}

Indeterminado

Bucle en el que no sabemos el número de iteraciones que se requieren, simiular a un montaje while.

for {
    line, err := buf.ReadString('\n')
    if err != nil {
        if err == io.EOF {
            fmt.Print(line)
            break
        }
        fmt.Println(err)
        break
    }
    fmt.Print(line)
}

Maps

El mismo bucle sobre rango se puede aplicar sobre una estructura maps

func main() {
 
    var m map[int]string = map[int]string{
        1: "One",
        2: "Two",
        3: "Three",
    }
     
    for k, v := range m {
        fmt.Println(k, v)
    }

Break

Sentencia para finalizar un bucle

func main(){
  for i := 0 ; i < 10; i++ {
    fmt.Printf("Valor de i: %d", i)
    if i == 7 {
      fmt.Printf(" y salimos del bucle\n")
      break
    }
    fmt.Printf("\n")
  }
}

Continue

Sentencia para finalizar la vuelta actual y pasar a la siguiente

func main(){
  var i = 0
  for i < 10 {
    fmt.Printf("Valor de i: %d", i)
    if i == 6 {
      fmt.Printf(" sumamos 3\n")
      i += 3
      continue
    }
    fmt.Printf("\n")
    i++
  }
}

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 10

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 21
Xavier es un desarrollador senior full stack y opera desde la ciudad mediterránea de Barcelona. Le encantan las tecnologías de software y está convencido que el desarrollo de software es un proceso colaborativo y abierto.
Y es un apasionado de la astronomía y de la fotografía. Lo puedes encontrar en:
Comparte este post


Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/footer.inc.php on line 24