Los ciclos son una herramienta esencial en programación que permiten repetir una tarea bajo una condición específica. En varios lenguajes, se encuentran diferentes tipos de ciclos, como while, for, y do-while. Cada uno de estos tiene su propio uso dependiendo de la situación o de la condición que se desea evaluar. Sin embargo, en Go, solo disponemos de un ciclo: el for, lo cual simplifica la tarea de elegir el ciclo adecuado para cada situación.
¿Cómo se utiliza el ciclo for en Go?
En el lenguaje Go, el ciclo for es el núcleo para realizar iteraciones. Vamos a ver algunas de sus formas de uso:
¿Cómo funciona un ciclo for básico?
Un ciclo for básico en Go se puede describir de la siguiente manera:
for i :=0; i <10; i++{ fmt.Println(i)}
Inicialización: En este caso i := 0 inicializa el índice en cero.
Condición:i < 10, que indica hasta cuándo se va a ejecutar el ciclo.
Incremento:i++ suma uno al valor de i en cada iteración.
Este ciclo imprimirá números del 0 al 9. Si quisiéramos incluir el 10, simplemente se cambiaría la condición a i <= 10.
¿Qué es un for tipo while en Go?
El for tipo while ejecuta una determinada acción mientras que una condición sea verdadera. Su estructura es la siguiente:
Aquí el ciclo continuará incrementando counterForever hasta que lleguemos a 11, donde utilizamos break para salir del ciclo.
¿Consejos y buenas prácticas con ciclos en Go?
Los ciclos son poderosos, pero deben utilizarse con cuidado para evitar los riesgos de desempeño y eficiencia:
Tener cuidado con los ciclos infinitos: A no ser que tengas una manera de romper el ciclo, pueden consumir recursos innecesarios.
Usar break y continue: Son comandos útiles para salir de los ciclos o para saltar iteraciones específicas cuando sea necesario.
Comentarios y buena formatación: Esto facilita la comprensión del código para ti y otros desarrolladores.
Te invitamos a practicar y experimentar con diferentes variaciones de ciclos, como el reto de crear un ciclo en dirección contraria, donde el índice decrece hasta llegar a una condición como cero. ¡No te rindas, sigue aprendiendo y mejorando tus habilidades en la programación con Go!
También existe el for range que es cuando se tiene una colección de un objeto
Por ejemplo
listaNumerosPares:=[]int{2,4,6,8,10,12,14,16,18,20}for i,par:= range listaNumerosPares { fmt.Printf("posicion %d número par: %d \n", i, par)}
Solución del Reto
fori:=10; i >0; i--{ fmt.Println(i)}
Buenísimo lo del for range! gracias
El for range lo asemejo al foreach de otros lenguajes!
gracias por el aporte
Aquí dejo el código de la clase mas todos las formas de realizar un ciclo en Golang:
For condicional
For while
For forever
For Range
For con funciones
For con goto tags
Si existe otras que conozcas ponlo en los comentarios :D !
package main
import"fmt"func main(){ fmt.Println("-------------For condicional-------------")// For condicionalfori:=0; i <=5; i++{ fmt.Println(i)} fmt.Println("-------------For while-------------")// For whilecounter:=0for counter <10{ fmt.Println(counter) counter++} fmt.Println("-------------For forever-------------")//For forevercounterForever:=0for{ fmt.Println(counterForever) counterForever++if counterForever >12{break}} fmt.Println("-------------For Range-------------")//For Rangearreglo:=[8]int{0,1,4,6,10,9} fmt.Println("Arreglo:", arreglo) fmt.Println("Primer ejemplo")for i,j:= range arreglo { fmt.Printf("indice i: %d tiene como valor #%d\n", i, j)} fmt.Println("Segundo ejemplo")fori:= range arreglo { fmt.Printf("Valor de i: %d\n", i)} fmt.Println("Tercer ejemplo")for _,j:= range arreglo { fmt.Printf("Valor de i: %d\n", j)} fmt.Println("-------------For con funciones-------------")// For con funcionesfori:=preFor();condicion(i); i =postFor(i){ fmt.Printf("Valor de i: %d", i)if i ==7{ fmt.Printf(" así que saldremos del ciclo...\n")break/// este ejemplo es para usar el break} fmt.Printf("\n")} fmt.Println("-------------For con goto tags-------------")var i int
CICLO: fmt.Println("estamos fuera del for")for i <10{if i ==6{ i = i +3 fmt.Println("Saltando a etiqueta CICLO con i = i + 3") goto CICLO2} fmt.Printf("Valor de i: %d\n", i) i++}CICLO2: fmt.Printf("ciclo 2 Valor de i: %d\n", i)if i ==9{ fmt.Printf("Valor de i: %d\n", i) i = i +3 fmt.Println("Saltando a etiqueta CICLO con i = i + 3") goto CICLO} fmt.Printf("terminamos\n") fmt.Println("-------------Reto for decreciente-------------")// Reto for decrecientefori:=10; i >=0; i--{ fmt.Println(i)}}func preFor() int { fmt.Println("prefor i")return0}func postFor(i int) int { fmt.Println("postFor sumemos i") i++return i
}func condicion(i int) bool { fmt.Println("condicion i")return(i <10)}
Super bueno este aporte!
Aportazo!
El for forever casi hace despegar hacia marte mi compu
🤣🤣🤣
El ciclo for en Go es equivalente al ciclo while en otros lenguajes, funciona para repetir una operación hasta que se indique lo contrario. Es importante no dejar que el ciclo corra de forma infinita, para ello hay que agregar restricciones.
Te comparto un blog bastante interesante con diferentes maneras para detener un ciclo for infinito.
Casos donde un código siempre debe estar a la escucha de una respuesta, puede ser programas con un menú interactivo o bien un servidor.
package main
import"fmt"func main(){//cuenta regrecivacontador:=10for contador >=0{ fmt.Println(contador) contador--}}```
fori:=10; i >0; i--{ fmt.Println(i)}
fori:=10; i >=0; i--{ fmt.Println(i)}
utlizar unicamente for para los ciclos me gusta bastante
for inverso
for i :=10; i >0; i--{ fmt.Println(i)}
Comparto el código visto en la clase:
package main
import"fmt"func main(){//For conditionalfori:=0; i <=10; i++{ fmt.Println(i)} fmt.Println("\n")// For whilecounter:=0for counter <10{ fmt.Println(counter) counter++}// For forevercounterForever:=0for{ fmt.Println(counterForever) counterForever++}}
For inverso:
for reverseCounter >0{ fmt.Println(reverseCounter) reverseCounter--}
fori:=10; i >0; i--{ fmt.Println(i)}
package main
import"fmt"func main(){fori:=10; i>0; i--{ fmt.Println(i)}}
counter :=10// For while en decrementofor counter >0{fmt.Println(counter) counter--}
En el for existe algo como continue ?
Hola Alex! Así es, en Go existen tanto la sentencia continue así como break.
continue interrumpe el bucle for y continúa en la siguiente iteración:
forn:= range 5{if n ==2{continue} fmt.Println(n)}// imprime// 0// 1// 3// 4
Por su parte break rompe completamente el ciclo for
forn:= range 4{if n ==2{break} fmt.Println(n)}// imprime// 0// 1