break, continue e rótulos
Fluxo de controle de laços e breaks rotulados
break, continue e rótulos é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Fundamentos do controle de laços
Go fornece três palavras-chave para controlar a execução de laços:
break— sai do laço ou switch atualcontinue— avança para a próxima iteraçãogoto— salta para uma instrução com rótulo (raramente usado)
Os rótulos fazem com que break e continue também funcionem com laços externos.
break em um laço
break sai imediatamente da instrução for, switch ou select mais interna:
for i := 0; i < 100; i++ {
if i*i > 50 {
break
}
fmt.Println(i)
}continue
continue ignora o restante do corpo do laço atual e salta para a instrução pós-iteração (ou para a verificação da condição):
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue // skip even numbers
}
fmt.Println(i) // prints 1,3,5,7,9
}break com rótulo
Um rótulo antes de um laço for permite sair dele a partir de um laço interno:
search:
for i, row := range grid {
for j, cell := range row {
if cell == target {
fmt.Printf("found at %d,%d\n", i, j)
break search
}
}
}continue com rótulo
Um continue com rótulo avança para a próxima iteração do laço externo identificado pelo rótulo:
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if j == 1 {
continue outer
}
fmt.Printf("%d,%d\n", i, j)
}
}Quando usar rótulos
Os rótulos são apropriados quando:
- É necessário sair de um laço aninhado a partir de uma parte profundamente interna
- A extração de uma função seria detalhada demais
Rótulos são incomuns em Go — se você perceber que precisa deles com frequência, considere refatorar usando funções ou canais.
goto (raro)
Go tem goto para saltar para uma instrução com rótulo. Ele é permitido dentro da mesma função e não pode saltar sobre declarações de variáveis:
- Casos de uso: código gerado e laços compactos de tratamento de erros
- Evite em código escrito manualmente — prefira o controle de fluxo estruturado
break em select
Dentro de uma instrução select, break sai do select — não de um laço for externo. Use um break com rótulo para sair do laço externo:
loop:
for {
select {
case msg := <-ch:
handle(msg)
case <-done:
break loop
}
}Evite aninhamentos profundos
Laços profundamente aninhados são difíceis de ler. Antes de adicionar um break com rótulo, pergunte:
- Posso extrair o laço interno para uma função auxiliar?
- Posso usar um canal ou uma fatia para simplificar a iteração?
- Retornos antecipados podem reduzir o aninhamento no nível externo?
Padrão prático: pesquisa com break
Um padrão comum: pesquise uma coleção e saia com break quando encontrar o item:
func contains(slice []string, target string) bool {
for _, v := range slice {
if v == target {
return true // prefer return over break+flag
}
}
return false
}Verificação rápida
Como sair de um laço externo a partir de dentro de um laço interno em Go?
Recapitulação: break, continue e rótulos
Controle o fluxo dos laços de forma eficaz em Go:
breaksai do laço ou switch atualcontinueavança para a próxima iteração- Os rótulos permitem que
break/continuetenham como alvo um laço externo gotoexiste, mas raramente é usado no Go idiomático- Dentro de select, use um break com rótulo para sair de um laço for externo
Próximo curso: funções e múltiplos valores de retorno.
Perguntas Frequentes
A aula “break, continue e rótulos” é grátis?
Sim — o texto completo de “break, continue e rótulos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “break, continue e rótulos”?
Fluxo de controle de laços e breaks rotulados Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “break, continue e rótulos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Instruções if e expressões de inicialização
- O laço for: todos os padrões
- Instruções switch em Go
- break, continue e rótulos