El bucle for es una de las instrucciones más habituales para ejecutar repetidamente una misma lógica.
En Go consta de la palabra clave for, una cabecera y un bloque de código que contiene el cuerpo del bucle entre llaves.
La cabecera consta de tres componentes separados por puntos y coma ;: inicialización, condición y post.
for init; condition; post {
// loop body - code that is executed repeatedly as long as the condition is true
}
Nota: A diferencia de otros lenguajes, no hay paréntesis () que rodeen los tres componentes de la cabecera.
De hecho, incluir esos paréntesis provoca un error de compilación.
Sin embargo, las llaves { } que rodean el cuerpo del bucle siempre son obligatorias.
for: un ejemploEl componente de inicialización normalmente prepara una variable contador, la condición comprueba si el bucle debe continuar o detenerse y el componente post normalmente incrementa el contador al final de cada repetición.
for i := 1; i < 10; i++ {
fmt.Println(i)
}
Este bucle imprimirá los números del 1 al 9 (incluido el 9).
Definir el paso suele hacerse con una instrucción de incremento o decremento, como se muestra en el ejemplo anterior.
Eres un entusiasta observador de pájaros que lleva la cuenta de cuántos pájaros han visitado tu jardín. Normalmente usas una tabla de recuento en un cuaderno para contar los pájaros, pero para trabajar mejor con tus datos, has digitalizado los recuentos de pájaros de las últimas semanas.
Empecemos analizando los datos para obtener una visión general. Averigua cuántos pájaros has contado en total desde que empezaste tus registros.
Implementa una función TotalBirdCount que acepta un slice de int que contiene el recuento de pájaros por día.
Debería devolver el número total de pájaros que has contado.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34
Ahora que tienes una idea general de tus cifras de recuento de pájaros, quieres hacer un análisis más detallado.
Implementa una función BirdsInWeek que acepta un slice de recuentos de pájaros por día y un número de semana.
Devuelve el número total de pájaros que contaste en esa semana concreta. Puedes suponer que las semanas siempre se registran completas.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12
Te diste cuenta de que, durante todo el tiempo que estuviste intentando llevar la cuenta de los pájaros, había un pájaro que se escondía en un rincón lejano del jardín.
Descubriste que este pájaro siempre pasaba un día sí y otro no en tu jardín.
No sabes exactamente dónde estaba entre esos días, pero desde luego no en tu jardín.
Tu intuición de observador de pájaros también te dice que el pájaro estaba en tu jardín el primer día que registraste en tu lista.
Con esta nueva información, escribe una función FixBirdCountLog que recibe un slice de pájaros contados por día como argumento y devuelve el slice después de corregir el error de recuento.
birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Regístrate en Exercism para aprender y dominar Go con 34 conceptos166 ejercicios y mentoría humana real, todo gratis.