ملخص - التحكم المتقدم في الحلقات
جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 5 من 68.
التحدي
سهلفي هذا التحدي، ستجمع بين بيانات break المسماة (labeled) مع 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 المسمى - بعد العثور على التهديد (أو إذا لم يتم العثور على أي تهديد)، استخدم بيان
switchمعfallthroughلعرض التنبيهات الأمنية بناءً على مستوى التهديد الذي كنت تبحث عنه
يجب أن يعمل بيان switch على النحو التالي:
- بالنسبة لـ
"critical": اطبع "CRITICAL: Lockdown initiated!" وانتقل (fall through) لطباعة تنبيه high أيضاً - بالنسبة لـ
"high": اطبع "HIGH: Security breach detected!" وانتقل (fall through) لطباعة تنبيه medium أيضاً - بالنسبة لـ
"medium": اطبع "MEDIUM: Increased monitoring active" - بالنسبة لـ
"low": اطبع "LOW: Standard security protocols"
إذا لم يتم العثور على التهديد بعد البحث في عدد المناطق المحدد، اطبع "Threat not found in searched zones" قبل عرض التنبيهات الأمنية. استخدم الفهرسة القائمة على الصفر (0-based indexing) لأرقام المناطق والمواقع داخل المناطق.
جرّب بنفسك
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: اكتب الكود الخاص بك أدناه
// استخدم الحلقات المتداخلة مع كسر مسمى (labeled break) للبحث عن التهديد
// اطبع موقع التهديد إذا تم العثور عليه، أو "Threat not found in searched zones" إذا لم يتم العثور عليه
// ثم استخدم switch مع fallthrough للتنبيهات الأمنية
}جميع دروس Logic & Flow
1تدفق التحكم المتقدم
جملة Switch مع `fallthrough`الخروج من الحلقات المتداخلةالاستمرار في حلقة محددةجملة `goto`ملخص - التحكم المتقدم في الحلقات2الـ Structs والميثودز (Methods)
تعريف الـ Methods على الـ Structsالـ Value Receiversالـ Pointer Receiversاختيار الـ Receiversالـ Methods مقابل الـ Functionsملخص - سلوك الـ Struct5تعمق في الـ Maps
Maps من نوع Structsالـ Pointers كقيم في الـ Mapsالتحقق من الـ Nil Mapsمقارنة الـ Mapsمراجعة - عداد تكرار الكلمات3الواجهات (الأساسيات)
ما هي الواجهة؟تعريف الواجهةتطبيق الواجهةاستخدام أنواع الواجهاتالواجهة الفارغةتأكيدات النوع (Type Assertions)تبديل النوع (Type Switch)ملخص - الأشكال والسلوكيات