Tutorial

Usando instruções break e continue ao trabalhar com loops em Go

Published on February 13, 2020
Português
Usando instruções break e continue ao trabalhar com loops em Go

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":

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:

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.

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:

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:

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:

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.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel