Recapitulação - Controle de Loop Avançado
Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 5 de 68.
Desafio
FácilNeste desafio, você combinará instruções break rotuladas com switch e fallthrough para criar um sistema de monitoramento de segurança. O sistema pesquisa várias zonas de segurança em busca de ameaças e as categoriza com níveis de alerta em cascata.
Você receberá duas entradas:
- Uma string representando o nível de ameaça a ser pesquisado (ex:
"high") - Uma string representando o número máximo de zonas a serem pesquisadas (ex:
"3")
Você recebeu os seguintes dados de zonas de segurança:
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"}
}Sua tarefa é:
- Analisar o nível de ameaça da primeira entrada
- Analisar o número máximo de zonas a serem pesquisadas da segunda entrada
- Usar loops aninhados com um
breakrotulado para pesquisar pelas zonas - Quando encontrar o nível de ameaça alvo, imprimir
"Threat found at zone [zone_number] position [position]"e sair imediatamente de ambos os loops usando o break rotulado - Após encontrar a ameaça (ou se nenhuma ameaça for encontrada), usar uma instrução
switchcomfallthroughpara exibir alertas de segurança baseados no nível de ameaça que você estava pesquisando
A instrução switch deve funcionar da seguinte forma:
- Para
"critical": Imprimir "CRITICAL: Lockdown initiated!" e usar fallthrough para imprimir o alerta high também - Para
"high": Imprimir "HIGH: Security breach detected!" e usar fallthrough para imprimir o alerta medium também - Para
"medium": Imprimir "MEDIUM: Increased monitoring active" - Para
"low": Imprimir "LOW: Standard security protocols"
Se a ameaça não for encontrada após pesquisar o número especificado de zonas, imprima "Threat not found in searched zones" antes de exibir os alertas de segurança. Use indexação baseada em 0 para os números das zonas e posições dentro das zonas.
Experimente você mesmo
package main
import (
"fmt"
"strconv"
)
func main() {
// Ler entrada
var threatLevel string
var maxZonesStr string
fmt.Scanln(&threatLevel)
fmt.Scanln(&maxZonesStr)
// Converter o máximo de zonas para inteiro
maxZones, _ := strconv.Atoi(maxZonesStr)
// Dados das zonas de segurança
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"},
}
// TODO: Escreva seu código abaixo
// Use loops aninhados com break rotulado para procurar pela ameaça
// Imprima a localização da ameaça se encontrada, ou "Threat not found in searched zones" se não for encontrada
// Em seguida, use switch com fallthrough para alertas de segurança
}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