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
for
pode 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
for
pode 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)
}
}