1 Visão geral das instruções de loop
Na linguagem Go, as instruções de loop permitem executar um bloco de código várias vezes. Quando é necessário realizar operações repetidamente, as instruções de loop tornam-se muito úteis. Por exemplo, é possível iterar através de cada elemento em uma array ou repetir uma operação até que uma condição específica seja atendida. Em Go, as instruções de loop são principalmente implementadas usando a palavra-chave for, que é a única instrução de loop na linguagem Go. O uso correto de instruções de loop é crucial para escrever um código eficiente e fácil de manter.
2 Conceitos básicos do loop for
2.1 Estrutura do loop for
O loop for na linguagem Go é composto por três partes:
- Declaração de inicialização: executada antes da primeira iteração, geralmente usada para declarar um contador de loop.
-
Expressão de condição: avaliada antes de cada iteração. Se a condição for
true, o corpo do loop é executado. - Instrução pós-loop: executada após o bloco de código de cada iteração, geralmente usada para atualizar o contador do loop.
A sintaxe do loop for é a seguinte:
for declaração de inicialização; expressão de condição; instrução pós-loop {
// código do corpo do loop
}
2.2 Exemplo simples do loop for
Vamos entender o processo de execução do loop for através de um exemplo simples:
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Println("O valor de i é:", i)
}
}
Neste exemplo, a variável i é inicializada como 0. O loop for verifica se a condição i < 5 é verdadeira. Se a condição for verdadeira, o corpo do loop é executado e o valor de i é impresso. Após a execução do corpo do loop, o valor de i é atualizado por i++ (operação de incremento), e em seguida o loop verifica novamente a condição até que o valor de i atinja 5, momento em que a condição se torna falsa e o loop for termina.
2.3 Outros exemplos de loop for
2.3.1 Loop infinito
Em Go, é possível omitir a declaração de inicialização, a expressão de condição e a instrução pós-loop do loop for, criando um loop infinito que será executado até ser terminado por uma instrução break ou por um valor de retorno de uma função.
for {
// Código dentro de um loop infinito
if algumaCondição {
break // Sai do loop quando uma determinada condição é atendida
}
}
2.3.2 Loop com apenas uma condição
Em Go, também é possível usar um loop for que contém apenas uma condição, semelhante a um loop while em outras linguagens de programação.
n := 0
for n < 5 {
fmt.Println(n)
n++
}
O código acima imprimirá 0 a 4 e o loop terminará quando n atingir 5.
2.3.3 Iterar através de uma array ou slice
Em Go, a palavra-chave range é usada para simplificar a iteração através de cada elemento de uma array ou slice.
itens := []int{1, 2, 3, 4, 5}
for índice, valor := range itens {
fmt.Printf("Índice: %d, Valor: %d\n", índice, valor)
}
O código acima imprimirá o índice e o valor de cada elemento. Se apenas o valor dos elementos for necessário, é possível usar _ para ignorar o índice.
for _, valor := range itens {
fmt.Printf("Valor: %d\n", valor)
}
Nota: O uso de arrays será explicado em detalhes nos capítulos subsequentes. Se não entender completamente esta parte, tudo bem desde que entenda que o loop
forpode ser usado dessa maneira.
2.3.4 Iterar através de mapas
Ao iterar por um mapa, a combinação do loop for e da expressão range é muito poderosa. Isso permite obter cada par chave-valor do mapa.
cores := map[string]string{"vermelho": "#ff000", "verde": "#00ff00", "azul": "#000ff"}
for chave, valor := range cores {
fmt.Printf("Chave: %s, Valor: %s\n", chave, valor)
}
Neste exemplo, imprimimos todas as chaves e seus valores correspondentes no mapa cores. Semelhante à iteração por slices, se você só precisar da chave ou do valor, pode optar por ignorar o outro.
Observação: O uso de mapas será explicado em detalhes nos capítulos subsequentes. Se você não entender esta parte, tudo bem, desde que entenda que o loop
forpode ser usado dessa maneira.
3 Controlando o fluxo dos loops
3.1 Utilize break para encerrar um loop
Às vezes, precisamos sair do loop prematuramente quando uma condição específica é atendida, e nesses casos, a declaração break pode ser utilizada. Abaixo está um exemplo de uso do break para sair de um loop:
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i == 5 {
break // Sai do loop quando i for igual a 5
}
fmt.Println("O valor de i é:", i)
}
// A saída conterá apenas valores de 0 a 4
}
3.2 Utilize continue para pular iterações
Em certas situações, podemos querer pular a iteração atual e prosseguir com a próxima iteração no loop. Isso pode ser alcançado utilizando a declaração continue. Aqui está um exemplo:
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i%2 != 0 {
continue // Pula esta iteração se i for ímpar
}
fmt.Println("Número par:", i)
}
}