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++
}
}