回顾:高级循环控制
本课属于 Coddy GO 学习旅程的“逻辑与流程”单元。第 5 课,共 68 课。
挑战
简单在这个挑战中,你将结合带标签的 break 语句、switch 和 fallthrough,创建一个安全监控系统。系统会搜索多个安全区域,查找威胁,并按级联警报级别对威胁进行分类。
你会收到两个输入:
- 一个表示要搜索的威胁级别的字符串(例如,
"high") - 一个表示要搜索的最大区域数的字符串(例如,
"3")
系统会提供以下安全区域数据:
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"}
}你的任务是:
- 从第一个输入中解析威胁级别
- 从第二个输入中解析要搜索的最大区域数
- 使用嵌套循环和带标签的
break搜索这些区域 - 找到目标威胁级别时,打印
"Threat found at zone [zone_number] position [position]",并立即使用带标签的 break 退出两个循环 - 找到威胁后(或没有找到威胁时),使用带有
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 在线编译器