Menu
CoddyTech

回顾:高级循环控制

本课属于 Coddy GO 学习旅程的“逻辑与流程”单元。第 5 课,共 68 课。

challenge icon

挑战

简单

在这个挑战中,你将结合带标签的 break 语句、switch 和 fallthrough,创建一个安全监控系统。系统会搜索多个安全区域,查找威胁,并按级联警报级别对威胁进行分类。

你会收到两个输入:

  • 一个表示要搜索的威胁级别的字符串(例如,"high")
  • 一个表示要搜索的最大区域数的字符串(例如,"3")

系统会提供以下安全区域数据:

zones := [][]string{
    {"low", "medium", "low"},
    {"medium", "high", "low"},
    {"critical", "medium", "high"},
    {"low", "critical", "medium"}
}

你的任务是:

  1. 从第一个输入中解析威胁级别
  2. 从第二个输入中解析要搜索的最大区域数
  3. 使用嵌套循环和带标签的 break 搜索这些区域
  4. 找到目标威胁级别时,打印 "Threat found at zone [zone_number] position [position]",并立即使用带标签的 break 退出两个循环
  5. 找到威胁后(或没有找到威胁时),使用带有 fallthrough 的 switch 语句,根据你要搜索的威胁级别显示安全警报

switch 语句应按以下方式运行:

  • 对于 "critical":打印 “CRITICAL: Lockdown initiated!”,并继续执行,打印高级别警报
  • 对于 "high":打印 “HIGH: Security breach detected!”,并继续执行,打印中级别警报
  • 对于 "medium":打印 “MEDIUM: Increased monitoring active”
  • 对于 "low":打印 “LOW: Standard security protocols”

如果搜索指定数量的区域后仍未找到威胁,请在显示安全警报之前打印 "Threat not found in searched zones"。区域编号和区域内的位置都使用从 0 开始的索引。

亲手试试

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // 读取输入
    var threatLevel string
    var maxZonesStr string
    fmt.Scanln(&threatLevel)
    fmt.Scanln(&maxZonesStr)
    
    // 将最大区域数转换为整数
    maxZones, _ := strconv.Atoi(maxZonesStr)
    
    // 安全区域数据
    zones := [][]string{
        {"low", "medium", "low"},
        {"medium", "high", "low"},
        {"critical", "medium", "high"},
        {"low", "critical", "medium"},
    }
    
    // TODO:在下方编写你的代码
    // 使用嵌套循环和带标签的 break 查找威胁
    // 如果找到威胁,输出其位置;否则输出 "Threat not found in searched zones"
    // 然后使用带 fallthrough 的 switch 处理安全警报
    
}

逻辑与流程中的所有课

自己练习: Go 在线编译器