جملة Switch مع `fallthrough`
جزء من قسم المنطق وتدفق التنفيذ في رحلة GO على Coddy. الدرس 1 من 68.
في Go، تنفذ عبارات switch عادةً الحالة المطابقة فقط، ثم تخرج تلقائيًا. لكن الكلمة المفتاحية fallthrough تغيّر هذا السلوك، إذ تفرض استمرار التنفيذ إلى الحالة التالية، سواء كانت مطابقة أم لا.
عندما تستخدم fallthrough في نهاية حالة، ستنفّذ Go تعليمات الحالة التالية دون التحقق من شرطها. وهذا يختلف عن لغات مثل C، حيث تحتاج إلى break لمنع الانتقال إلى الحالة التالية.
grade := "B"
switch grade {
case "A":
fmt.Println("Excellent!")
fallthrough
case "B":
fmt.Println("Good job!")
fallthrough
case "C":
fmt.Println("Keep trying!")
}في هذا المثال، إذا كانت grade تساوي "B"، فستطبع كلًا من "Good job!" و"Keep trying!" بسبب عبارة fallthrough. يتيح لك هذا تنفيذ عدة إجراءات مترابطة لحالة مطابقة واحدة.
التحدي
سهلفي هذا التحدي، ستتدرّب على استخدام الكلمة المفتاحية fallthrough في تعليمة switch لإنشاء نظام تنبيهات حسب الأولوية. عند إطلاق تنبيه ذي أولوية عالية، ينبغي للنظام عرض عدة رسائل تحذيرية بالتتابع.
ستتلقى مُدخلًا نصيًا يمثّل مستوى تنبيه. أنشئ تعليمة switch تتعامل مع مستويات التنبيه المختلفة وتستخدم fallthrough لعرض رسائل متتابعة للتنبيهات ذات الأولوية الأعلى.
سيكون المُدخل أحد مستويات التنبيه التالية: "critical" أو "high" أو "medium" أو "low".
ينبغي أن تعمل تعليمة switch كما يلي:
- لـ
"critical": اطبع "CRITICAL: System shutdown imminent!" وانتقل إلى حالة high (التي تنتقل بدورها إلى حالة medium) - لـ
"high": اطبع "HIGH: Immediate attention required!" وانتقل لطباعة رسالة الأولوية medium أيضًا - لـ
"medium": اطبع "MEDIUM: Please review when possible" - لـ
"low": اطبع "LOW: Informational only"
بما أن fallthrough يربط الحالات بالتتابع، فإن التنبيه "critical" يطبع ثلاثة أسطر (CRITICAL وHIGH وMEDIUM)، والتنبيه "high" يطبع سطرين (HIGH وMEDIUM)، بينما يطبع كل من "medium" و"low" سطرًا واحدًا.
جرّب بنفسك
package main
import "fmt"
func main() {
// اقرأ المدخلات
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: اكتب الكود الخاص بك أدناه
// أنشئ عبارة switch باستخدام fallthrough لنظام التنبيه
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
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)ملخص - الأشكال والسلوكياتتدرّب بنفسك: مترجم Go عبر الإنترنت