Desafio Go
Dia da semana com switch
Enunciado
Escreva um programa que receba um número de 1 a 7 e imprima o dia da semana correspondente usando switch sem break. Para números fora desse intervalo, imprima "Dia inválido".
Requisitos
- Usar
switchsembreak. - Mapear 1 a 7 para os dias da semana.
- Tratar valores inválidos com
default.
Código inicial
package main
import "fmt"
func main() {
dia := 3
// use switch para imprimir o dia
}
Saída esperada
Quarta-feira
Ver dica
Você pode agrupar múltiplos valores em um caso: case 1, 7:.
Mostrar solução
package main
import "fmt"
func main() {
dia := 3
switch dia {
case 1:
fmt.Println("Domingo")
case 2:
fmt.Println("Segunda-feira")
case 3:
fmt.Println("Terça-feira")
case 4:
fmt.Println("Quarta-feira")
case 5:
fmt.Println("Quinta-feira")
case 6:
fmt.Println("Sexta-feira")
case 7:
fmt.Println("Sábado")
default:
fmt.Println("Dia inválido")
}
}
Passo a passo
- A variável
diaé declarada com valor 3. - O
switch diaavalia o valor e compara com cadacase. - Como
diaé 3, o casocase 3é executado, imprimindo "Terça-feira". - O
breaké implícito: após executar um caso, o switch termina. - O
defaultcobre valores fora de 1 a 7.
Por que funciona
O switch em Go não requer break; cada caso é exclusivo. A cláusula default é executada quando nenhum caso corresponde. Isso simplifica o código e evita erros de fallthrough acidental.
Erros comuns
- Esquecer o
default: valores inválidos não imprimem nada. - Tentar usar
breakdesnecessariamente: não causa erro, mas é redundante. - Usar
fallthroughsem querer: ele força a execução do próximo caso, o que raramente é desejado.
Outra forma de resolver
Usar um slice de strings:
dias := []string{"Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"}
if dia >= 1 && dia <= 7 {
fmt.Println(dias[dia-1])
} else {
fmt.Println("Dia inválido")
}
Preferível para muitas opções, mas o switch é mais legível para poucos casos.
Saída esperada
Quarta-feira