O laço for é uma das instruções mais usadas para executar alguma lógica repetidamente.
Em Go, ele é formado pela palavra-chave for, um cabeçalho e um bloco de código que contém o corpo do laço envolvido por chaves.
O cabeçalho é composto por 3 componentes separados por ponto e vírgula ;: init, condition e post.
for init; condition; post {
// loop body - code that is executed repeatedly as long as the condition is true
}
Nota: Diferente de outras linguagens, não há parênteses () envolvendo os três componentes do cabeçalho.
Na verdade, inserir esses parênteses é um erro de compilação.
No entanto, as chaves { } em volta do corpo do laço são sempre obrigatórias.
for - um exemploNormalmente o componente init cria uma variável contadora, o componente condition verifica se o laço deve continuar ou parar, e o componente post incrementa o contador no fim de cada repetição.
for i := 1; i < 10; i++ {
fmt.Println(i)
}
Esse laço vai imprimir os números de 1 a 9 (incluindo o 9).
Definir o passo costuma ser feito com uma instrução de incremento ou decremento, como mostra o exemplo acima.
Você adora observar aves e acompanha quantas visitaram seu jardim. Normalmente, você anota as contagens em um caderno, mas, para trabalhar melhor com seus dados, você digitalizou as contagens de aves das últimas semanas.
Vamos começar a analisar os dados com uma visão geral. Descubra quantas aves você contou no total desde que começou seus registros.
Implemente uma função TotalBirdCount que recebe um slice de ints contendo a contagem de aves por dia.
Ela deve retornar o número total de aves que você contou.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34
Agora que você já tem uma ideia geral dos seus números de contagem de aves, você quer fazer uma análise mais detalhada.
Implemente uma função BirdsInWeek que recebe um slice com as contagens de aves por dia e um número de semana.
Ela retorna o número total de aves que você contou nessa semana específica. Você pode assumir que as semanas são sempre registradas por completo.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12
Você percebeu que, todo o tempo em que estava tentando acompanhar as aves, havia uma ave escondida em um canto distante do jardim.
Você descobriu que essa ave passava dia sim, dia não no seu jardim.
Você não sabe exatamente onde ela estava entre esses dias, mas com certeza não era no seu jardim.
Sua intuição de observador de aves também diz que a ave estava no seu jardim no primeiro dia registrado na sua lista.
Com essa nova informação, escreva uma função FixBirdCountLog que recebe como argumento um slice com as aves contadas por dia e retorna o slice depois de corrigir o erro de contagem.
birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos166 exercícios e mentoria humana de verdade, tudo de graça.