جملة 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: 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 عبر الإنترنت