جملة Switch مع `fallthrough`
جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 1 من 68.
في لغة Go، تنفذ جمل switch عادةً الحالة المطابقة فقط ثم تخرج تلقائياً. ومع ذلك، فإن الكلمة المفتاحية fallthrough تغير هذا السلوك عن طريق إجبار التنفيذ على الاستمرار إلى الحالة التالية، بغض النظر عما إذا كانت مطابقة أم لا.
عندما تستخدم fallthrough في نهاية حالة (case)، ستقوم لغة 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!" واستخدم fall through لطباعة رسالة الأولوية العالية أيضاً - بالنسبة لـ
"high": اطبع "HIGH: Immediate attention required!" واستخدم fall through لطباعة رسالة الأولوية المتوسطة أيضاً - بالنسبة لـ
"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 لنظام التنبيه
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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)ملخص - الأشكال والسلوكيات