Resumo dos Destaques de Fluxo de Controle
Cada item de destaque das 9 páginas desta seção, reunido em uma única página e agrupado pela página de origem.
Busque em todas as páginas da documentação
Cada item de destaque das 9 páginas desta seção, reunido em uma única página e agrupado pela página de origem.
for) que cobre as formas estilo C, while e rangeif e switch podem carregar instruções de inicialização que escopam variáveis locais para o blocoswitch não executa o próximo caso por padrão - fallthrough explícito é rarodefer, panic e recover são ferramentas de fluxo de controle com regras de tempo de execução rigorosasIf exigem chaves, mas sem parênteses, impostas em tempo de compilaçãofor lidam com toda a iteração em Go, não existe palavra-chave whilerange não atualizam slices diretamente, use o índice para modificarswitch exigem break explícito, sem queda automáticadefer é executado em ordem LIFO na saída, mesmo durante o desenrolar de panicif init escopam variáveis apenas para blocos condicionaisfor e Semântica rangefor range copia cabeçalhos de coleção, não elementos de array, afetando mutaçõesrange de String decodifica runas UTF-8, avançando o índice pela largura de bytesfor range de Canal esperam até estarem prontos, terminam quando fechados e drenadoss[i], não pelo valor de cópia de rangefor de três partes conta loops, a forma apenas de condição age como whileif e switch escopam variáveis temporárias para esse blocoif-else-iffallthrough continua explicitamente para o próximo caso incondicionalmentedefer para agendar a limpeza quando uma função retornarrecover para o desenrolar de panic, mas só funciona dentro de uma chamada adiada (deferred)deferred) são avaliados imediatamente, não quando chamadosdefer em loops; a pilha cresce até que a função circundante retornepanic é por goroutine; outras goroutines continuam em execuçãopanicbreak sai do for, switch ou select mais interno; continue pula para a próxima iteração do loopselect para direcionar break e continue através de construções aninhadasbreak em select sai apenas do select, não do loop circundante, a menos que rotuladobreak sem rótulo em select dentro de loops for executa para sempre, exigindo break rotuladocontinue visa apenas loops, não instruções switch; reestruture se necessáriobreak rotulados para um código mais claro e de fácil manutençãofor de três partes ainda reutilizamv := v ou passe como parâmetrodefer captura os valores finais do loop; passe argumentos para o bloco deferdefer recover para capturar panics e evitar falhas no processodefer para limpeza no escopo da requisição, como timers, fechamento de corpo e cancelamento de spanpanic na camada útil mais externa, como middleware de servidor ou roteadorpanic independentemente, então a recuperação evita falhas em todo o processodefer recover com logging estruturado e IDs de requisição do contextofor range por padrão para slices, mapas e stringspanic em servidores de produçãodefer logo após a aquisição bem-sucedida do recursorangeRevisado por Chris St. John·Última atualização: 18 de jul. de 2026