Table of Contents
URL: https://www.progressiverobot.com/using-break-and-continue-statements-when-working-with-loops-in-go-pt/
Introdução
O uso de loops do tipo "for" em Go permite que você automatize e repita tarefas de maneira eficiente.
Aprender como controlar a operação e o fluxo dos loops permitirá uma lógica personalizada em seu programa. É possível controlar seus loops com as instruções break [interromper] e continue [continuar].
Instrução break
Em Go, a instrução break termina a execução do loop atual. Uma break está quase sempre pareada com uma instrução condicional if.
Vamos ver um exemplo que usa a instrução break em um loop do tipo "for":
[label break.go]
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i == 5 {
fmt.Println("Breaking out of loop")
break // break here
}
fmt.Println("The value of i is", i)
}
fmt.Println("Exiting program")
}
Este pequeno programa cria um loop do tipo "for" que irá iterar enquanto i for menor que 10.
Dentro do loop do tipo "for", há uma instrução if. A instrução if testa a condição de i para ver se o valor é menor que 5. Se o valor i não for igual a 5, o loop continua e imprime o valor de i. Se o valor de i for igual a 5, o loop irá executar a instrução break, imprimir que ele está Breaking out of loop [Saindo do loop] e parar de executar o loop. Ao final do programa, imprimimos Exiting program [Saindo do programa] para exprimir que saímos do loop.
Quando executarmos esse código, nosso resultado será o seguinte:
[secondary_label Output]
The value of i is 0
The value of i is 1
The value of i is 2
The value of i is 3
The value of i is 4
Breaking out of loop
Exiting program
Isso mostra que, uma vez que o número inteiro i é avaliado como equivalente a 5, o loop interrompe, uma vez que o programa é orientado a fazer isso com a instrução break.
Loops aninhados
É importante lembrar que a instrução break irá parar apenas a execução do loop mais interno em que for chamada. Se tiver um conjunto aninhado de loops, será necessário uma interrupção para cada loop se desejar.
[label nested.go]
package main
import "fmt"
func main() {
for outer := 0; outer < 5; outer++ {
if outer == 3 {
fmt.Println("Breaking out of outer loop")
break // break here
}
fmt.Println("The value of outer is", outer)
for inner := 0; inner < 5; inner++ {
if inner == 2 {
fmt.Println("Breaking out of inner loop")
break // break here
}
fmt.Println("The value of inner is", inner)
}
}
fmt.Println("Exiting program")
}
Neste programa, temos dois loops. Embora ambos iterem 5 vezes, cada um tem uma instrução condicional if com uma instrução break. O loop exterior será interrompido se o valor outer for igual a 3. O loop interno será interrompido se o valor inner for 2.
Se executarmos o programa, veremos o seguinte resultado:
[secondary_label Output]
The value of outer is 0
The value of inner is 0
The value of inner is 1
Breaking out of inner loop
The value of outer is 1
The value of inner is 0
The value of inner is 1
Breaking out of inner loop
The value of outer is 2
The value of inner is 0
The value of inner is 1
Breaking out of inner loop
Breaking out of outer loop
Exiting program
Note que cada vez que o loop interno é interrompido, o loop exterior não é. Isso acontece porque o break irá interromper apenas o loop mais interno de onde for chamado.
Vimos de que maneira o uso da instrução break irá interromper a execução de um loop. Em seguida, vamos ver como é possível continuar a iteração de um loop.
Instrução continue
A instrução continue é usada quando você quer pular a parte restante do loop, retornar ao topo do loop e dar continuidade a uma nova iteração.
Tal como com a instrução break, a instrução continue é comumente usada com uma instrução condicional if.
Usando o mesmo programa de loop do tipo "for" que na seção anterior da Instrução break, usaremos uma instrução continue, em vez de uma instrução break:
[label continue.go]
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i == 5 {
fmt.Println("Continuing loop")
continue // break here
}
fmt.Println("The value of i is", i)
}
fmt.Println("Exiting program")
}
A diferença entre usar a instrução continue, em vez de uma instrução break, é que o nosso código continuará apesar da interrupção quando a variável i for avaliada como equivalente a 5. Vamos ver nosso resultado:
[secondary_label Output]
The value of i is 0
The value of i is 1
The value of i is 2
The value of i is 3
The value of i is 4
Continuing loop
The value of i is 6
The value of i is 7
The value of i is 8
The value of i is 9
Exiting program
Aqui, vemos que a linha The value of i is 5 [O valor de i é 5] nunca ocorre no resultado, mas o loop continua após aquele ponto para imprimir linhas para os números 6-10 antes de sair do loop.
Você pode usar a instrução continue para evitar um código condicional extremamente aninhado, ou para otimizar um loop, eliminando casos que ocorram com frequência e que você gostaria de rejeitar.
A instrução continue faz com que um programa pule certos fatores que surjam dentro de um loop, mas depois continuem pelo restante do loop.
Conclusão
As instruções break e continue em Go permitirão que você use loops do tipo "for" de maneira mais eficaz em seu código.