Switch com `fallthrough`
Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 1 de 68.
Em Go, as instruções switch normalmente executam apenas o caso correspondente e saem automaticamente. No entanto, a palavra-chave fallthrough altera esse comportamento ao forçar a execução a continuar para o próximo caso, independentemente de ele corresponder ou não.
Quando você usa fallthrough ao final de um case, o Go executará o código do próximo caso sem verificar sua condição. Isso é diferente de linguagens como C, onde você precisa de break para evitar o fallthrough.
grade := "B"
switch grade {
case "A":
fmt.Println("Excellent!")
fallthrough
case "B":
fmt.Println("Good job!")
fallthrough
case "C":
fmt.Println("Keep trying!")
}Neste exemplo, se grade for "B", ele imprimirá tanto "Good job!" quanto "Keep trying!" por causa da instrução fallthrough. Isso permite que você execute várias ações relacionadas para um único caso correspondente.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Desafio
FácilNeste desafio, você praticará o uso da palavra-chave fallthrough em uma instrução switch para criar um sistema de alerta de prioridade. Quando um alerta de alta prioridade é acionado, o sistema deve exibir várias mensagens de aviso em sequência.
Você receberá uma entrada de string representando um nível de alerta. Crie uma instrução switch que manipule diferentes níveis de alerta e use fallthrough para exibir mensagens em cascata para alertas de maior prioridade.
A entrada será um destes níveis de alerta: "critical", "high", "medium" ou "low".
Sua instrução switch deve funcionar da seguinte forma:
- Para
"critical": Imprima "CRITICAL: System shutdown imminent!" e use fallthrough para imprimir também a mensagem de alta prioridade - Para
"high": Imprima "HIGH: Immediate attention required!" e use fallthrough para imprimir também a mensagem de média prioridade - Para
"medium": Imprima "MEDIUM: Please review when possible" - Para
"low": Imprima "LOW: Informational only"
Use a palavra-chave fallthrough para que os alertas críticos exibam as mensagens de prioridade crítica e alta, e os alertas altos exibam as mensagens de prioridade alta e média.
Folha de consulta
A palavra-chave fallthrough em instruções switch do Go força a execução a continuar para o próximo caso sem verificar sua condição:
grade := "B"
switch grade {
case "A":
fmt.Println("Excellent!")
fallthrough
case "B":
fmt.Println("Good job!")
fallthrough
case "C":
fmt.Println("Keep trying!")
}Quando grade é "B", isso imprimirá tanto "Good job!" quanto "Keep trying!" por causa da instrução fallthrough. Diferente de linguagens como C, as instruções switch do Go saem automaticamente após um caso correspondente, a menos que fallthrough seja usado.
Experimente você mesmo
package main
import "fmt"
func main() {
// Ler a entrada
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: Escreva seu código abaixo
// Crie uma instrução switch com fallthrough para o sistema de alerta
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Fluxo de Controle Avançado
Switch com `fallthrough`Interrompendo Loops AninhadosContinuando um Loop EspecíficoA Instrução `goto`Recapitulação - Controle de Loop Avançado4Projeto: Lista de Tarefas Simples
Configuração do ProjetoAdicionando uma Tarefa2Structs e Métodos
Definindo Métodos em StructsRecebedores de ValorRecebedores de PonteiroEscolhendo RecebedoresMétodos vs FunçõesRecapitulação - Comportamento de Structs5Mapas em Profundidade
Mapas de StructsPonteiros como Valores de MapVerificando Mapas NilComparando MapasRecapitulação - Contador de Frequência de Palavras3Interfaces (O Básico)
O que é uma Interface?Definindo uma InterfaceImplementando uma InterfaceUsando Tipos de InterfaceInterface VaziaAsserções de TipoType SwitchRecapitulação - Formas e Comportamentos