Menu
CoddyTech

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 case correspondente e depois saem automaticamente. No entanto, a palavra-chave fallthrough altera esse comportamento ao forçar a execução a continuar para o próximo case, independentemente de ele corresponder.

Quando você usa fallthrough no final de um case, Go executará o código do próximo case sem verificar sua condição. Isso é diferente de linguagens como C, nas quais você precisa de break para evitar a execução do próximo case.

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á "Good job!" e "Keep trying!" por causa da instrução fallthrough. Isso permite executar várias ações relacionadas para um único caso correspondente.

challenge icon

Desafio

Fácil

Neste desafio, você vai praticar o uso da palavra-chave fallthrough em uma instrução switch para criar um sistema de alertas por prioridade. Quando um alerta de alta prioridade for acionado, o sistema deverá exibir várias mensagens de aviso em sequência.

Você receberá uma entrada de string que representa um nível de alerta. Crie uma instrução switch que trate diferentes níveis de alerta e use fallthrough para exibir mensagens em cascata para alertas de prioridade mais alta.

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 continue para o caso high (que, por sua vez, continua para medium)
  • Para "high": imprima "HIGH: Immediate attention required!" e continue para imprimir também a mensagem de prioridade medium
  • Para "medium": imprima "MEDIUM: Please review when possible"
  • Para "low": imprima "LOW: Informational only"

Como fallthrough encadeia os casos, um alerta "critical" imprime três linhas (CRITICAL, HIGH, MEDIUM), um alerta "high" imprime duas (HIGH, MEDIUM), e "medium" e "low" imprimem uma linha cada.

Experimente você mesmo

package main

import "fmt"

func main() {
    // Leia 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 alertas
    
}
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Compilador de Go online