Uma das principais estruturas de controle no Go é o for. É importante ressaltar que o go não possui as estruturas while e foreach, por isso utilizar o for da maneira correta é tão importante.
Outro dia pesquisando encontrei um artigo muito bacana com exemplos de como aplicar o for de cinco maneiras diferentes e resolvi compartilhar aqui. O link para o artigo original está no final do post.
For básico com três componentes.
total := 0
for i := 1; i < 5; i++ {
fmt.Print(total, " + ", i, " = ")
total += i
fmt.Println(total)
}
fmt.Println("Valor da soma:", total)
Output
0 + 1 = 1
1 + 2 = 3
3 + 3 = 6
6 + 4 = 10
Valor da soma: 10
No exemplo acima, declaramos o total com valor inicial 0 e i 1 e somamos o valor de i com o total.
Exibimos as informações durante a execução para demonstrar o funcionamento de cada etapa do processo.
For substituindo While
total := 0
for total < 5 {
fmt.Print(total, " + ", 1, " = ")
total += 1
fmt.Println(total)
}
fmt.Println("Valor da soma:", total)
Output
0 + 0 = 1
1 + 1 = 2
2 + 2 = 3
3 + 3 = 4
4 + 4 = 5
Valor da soma: 5
No exemplo acima utilizamos somente o total e é somado 1 a cada iteração.
Loop infinito (while true)
total := 0
for {
fmt.Print(total, " + ", 1, " = ")
total++
fmt.Println(total)
}
Output
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
3 + 1 = 4
4 + 1 = 5
5 + 1 = 6
6 + 1 = 7
7 + 1 = 8
8 + 1 = 9
9 + 1 = 10
….
Loops infinitos são úteis quando estamos desenvolvendo um programa que precisa manter a execução. Por exemplo, um servidor que precisa escutar uma porta constantemente. No exemplo, declaramos o valor inicial do total 0 e somamos um a cada iteração.
O programa executará a soma infinitamente ou até a execução for interrompida manualmente.
For-each range loop
frutas := []string{"Laranja", "Banana", "Maçã", "Limão"}
for i, s := range frutas {
fmt.Println("Posição", i, " - Valor", s)
}
Output
Posição 0 – Valor Laranja
Posição 1 – Valor Banana
Posição 2 – Valor Maçã
Posição 3 – Valor Limão
Para percorrer arrays, ou slices no Go, utilizamos o range. Aqui definimos um slice de arrays com uma lista de frutas e atribuímos as variáveis i para o índice e s para o valor que está sendo acessado na iteração.
Loop com interrupção (continue
total := 0
for i := 1; i < 5; i++ {
if i%2 != 0 {
continue
}
fmt.Print(total, " + ", i, " = ")
total += i
fmt.Println(total)
}
fmt.Println("Valor da soma:", total)
Output
0 + 2 = 2
2 + 4 = 6
Valor da soma: 6
No exemplo acima definimos o total com o valor 0 e fazemos um loop de 1 a 5. Caso o valor de i seja par ele realiza a soma de i e o total, senão continua o loop sem somar.
Loop com interrupção (break)
total := 0
for i := 1; i < 5; i++ {
if total == 6 {
break
}
fmt.Print(total, " + ", i, " = ")
total += i
fmt.Println(total)
}
fmt.Println("Valor da soma:", total)
Output
0 + 1 = 1
1 + 2 = 3
3 + 3 = 6
Valor da soma: 6
Este exemplo é similar ao anterior, mas utilizamos o break para sair do loop quando o valor de total for igual a 6.
Referências:
https://yourbasic.org/golang/for-loop/