جملة Switch مع `fallthrough`
جزء من قسم المنطق وتدفق التنفيذ في رحلة GO على Coddy. الدرس 1 من 68.
في Go، تنفّذ عبارات switch عادةً case المطابقة فقط، ثم تخرج تلقائيًا. ومع ذلك، تغيّر الكلمة المفتاحية fallthrough هذا السلوك، إذ تفرض استمرار التنفيذ إلى case التالية، بغضّ النظر عمّا إذا كانت مطابقة أم لا.
عند استخدام 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 لإنشاء نظام تنبيهات ذي أولوية. عند تشغيل تنبيه ذي أولوية عالية، يجب أن يعرض النظام رسائل تحذير متعددة بالتتابع.
ستتلقى إدخالًا من النوع string يمثّل مستوى تنبيه. أنشئ عبارة switch تتعامل مع مستويات التنبيه المختلفة وتستخدم fallthrough لعرض رسائل متتابعة للتنبيهات ذات الأولوية الأعلى.
سيكون الإدخال أحد مستويات التنبيه التالية: "critical" أو "high" أو "medium" أو "low".
يجب أن تعمل عبارة switch كما يلي:
- بالنسبة إلى
"critical": اطبع "CRITICAL: System shutdown imminent!" ثم انتقل باستخدام fallthrough لطباعة رسالة الأولوية العالية أيضًا - بالنسبة إلى
"high": اطبع "HIGH: Immediate attention required!" ثم انتقل باستخدام fallthrough لطباعة رسالة الأولوية المتوسطة أيضًا - بالنسبة إلى
"medium": اطبع "MEDIUM: Please review when possible" - بالنسبة إلى
"low": اطبع "LOW: Informational only"
استخدم الكلمة المفتاحية fallthrough بحيث تعرض التنبيهات الحرجة رسالتي الأولوية الحرجة والعالية، وتعرض التنبيهات العالية رسالتي الأولوية العالية والمتوسطة.
جرّب بنفسك
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 عبر الإنترنت