Ôn tập: điều khiển vòng lặp nâng cao
Thuộc phần Logic và luồng điều khiển trong hành trình GO của Coddy. Bài học 5 trên 68.
Thử thách
DễTrong thử thách này, bạn sẽ kết hợp câu lệnh break có nhãn với switch và fallthrough để tạo một hệ thống giám sát an ninh. Hệ thống tìm kiếm mối đe dọa trong nhiều khu vực an ninh và phân loại chúng theo các cấp độ cảnh báo tăng dần.
Bạn sẽ nhận hai đầu vào:
- Một chuỗi (string) biểu thị cấp độ đe dọa cần tìm (ví dụ:
"high") - Một chuỗi biểu thị số khu vực tối đa cần tìm (ví dụ:
"3")
Bạn được cung cấp dữ liệu về các khu vực an ninh sau:
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"}
}Nhiệm vụ của bạn là:
- Phân tích cấp độ đe dọa từ đầu vào thứ nhất
- Phân tích số khu vực tối đa cần tìm từ đầu vào thứ hai
- Dùng các vòng lặp lồng nhau với câu lệnh
breakcó nhãn để tìm kiếm trong các khu vực - Khi tìm thấy cấp độ đe dọa mục tiêu, in ra
"Threat found at zone [zone_number] position [position]"và thoát ngay cả hai vòng lặp bằng câu lệnh break có nhãn - Sau khi tìm thấy mối đe dọa (hoặc nếu không tìm thấy), dùng câu lệnh
switchvớifallthroughđể hiển thị cảnh báo an ninh dựa trên cấp độ đe dọa bạn đang tìm
Câu lệnh switch hoạt động như sau:
- Với
"critical": In ra "CRITICAL: Lockdown initiated!" rồi tiếp tục để in cả cảnh báo cấp độ cao - Với
"high": In ra "HIGH: Security breach detected!" rồi tiếp tục để in cả cảnh báo cấp độ trung bình - Với
"medium": In ra "MEDIUM: Increased monitoring active" - Với
"low": In ra "LOW: Standard security protocols"
Nếu không tìm thấy mối đe dọa sau khi tìm trong số khu vực đã chỉ định, hãy in ra "Threat not found in searched zones" trước khi hiển thị các cảnh báo an ninh. Đánh số khu vực và vị trí trong mỗi khu vực từ 0.
Tự làm thử
package main
import (
"fmt"
"strconv"
)
func main() {
// Đọc đầu vào
var threatLevel string
var maxZonesStr string
fmt.Scanln(&threatLevel)
fmt.Scanln(&maxZonesStr)
// Chuyển số vùng tối đa thành số nguyên
maxZones, _ := strconv.Atoi(maxZonesStr)
// Dữ liệu các vùng an ninh
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"},
}
// TODO: Viết code của bạn bên dưới
// Dùng các vòng lặp lồng nhau với break có nhãn để tìm mối đe dọa
// In ra vị trí mối đe dọa nếu tìm thấy, hoặc "Threat not found in searched zones" nếu không tìm thấy
// Sau đó dùng switch với fallthrough để đưa ra cảnh báo an ninh
}Tất cả bài học trong Logic và luồng điều khiển
1Luồng điều khiển nâng cao
Switch với `fallthrough`Thoát khỏi vòng lặp lồng nhauTiếp tục một vòng lặp cụ thểCâu lệnh `goto`Ôn tập: điều khiển vòng lặp nâng cao4Dự án: Danh sách việc cần làm đơn giản
Thiết lập dự ánThêm một việc cần làm2Struct và phương thức
Định nghĩa phương thức cho structReceiver giá trịReceiver con trỏChọn receiverPhương thức và hàmÔn tập: hành vi của struct5Tìm hiểu chuyên sâu về map
Map chứa structCon trỏ làm giá trị của mapKiểm tra map nilSo sánh các mapÔn tập: bộ đếm tần suất từ8Dự án: Quản lý hàng tồn kho đơn giản
Tổng quan dự ánKiểm tra hàng tồn kho3Interface (cơ bản)
Interface là gì?Định nghĩa interfaceTriển khai interfaceDùng kiểu interfaceInterface rỗngKhẳng định kiểuType switchÔn tập: hình dạng và hành viTự luyện tập: Trình biên dịch Go online