عبارات switch في Go
switch المعلَّمة وغير المعلَّمة، وfallthrough
عبارات switch في Go درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
أساسيات switch
تُعد switch في Go أقوى من نظيرتها في C: فلا يحدث الانتقال التلقائي إلى الحالة التالية، ويمكن أن تحتوي الحالات على قيم متعددة:
day := "Monday"
switch day {
case "Saturday", "Sunday":
fmt.Println("Weekend")
default:
fmt.Println("Weekday")
}لا يوجد fallthrough ضمني
في Go، تنتهي كل كتلة case تلقائيًا — بخلاف C، حيث يجب كتابة break صراحةً:
- شفرة أوضح وأخطاء أقل
- استخدم
fallthroughصراحةً عند الحاجة إلى السلوك المشابه لـ C، وهو أمر نادر
switch مع عبارة التهيئة
مثل if، تقبل switch عبارة تهيئة اختيارية:
switch os := runtime.GOOS; os {
case "linux":
fmt.Println("Linux")
case "darwin":
fmt.Println("macOS")
default:
fmt.Printf("Other: %s\n", os)
}switch بلا تعبير (بديل لسلسلة if-else)
لا يحتوي switch بلا تعبير على تعبير بعد الكلمة المفتاحية — إذ تقيّم كل حالة قيمة منطقية:
score := 75
switch {
case score >= 90:
fmt.Println("A")
case score >= 80:
fmt.Println("B")
case score >= 70:
fmt.Println("C")
default:
fmt.Println("F")
}switch حسب النوع
يفحص switch حسب النوع النوع الديناميكي لقيمة واجهة:
func describe(i interface{}) {
switch v := i.(type) {
case int:
fmt.Printf("int: %d\n", v)
case string:
fmt.Printf("string: %s\n", v)
default:
fmt.Printf("unknown: %T\n", v)
}
}fallthrough
استخدم fallthrough لتنفيذ جسم الحالة التالية صراحةً بغض النظر عن شرطها، وهو أمر نادر الحاجة:
n := 1
switch n {
case 1:
fmt.Println("one")
fallthrough
case 2:
fmt.Println("one or two")
}قيم متعددة لكل case
أدرج القيم المتعددة مفصولة بفواصل في حالة واحدة:
func isVowel(c byte) bool {
switch c {
case 'a', 'e', 'i', 'o', 'u':
return true
}
return false
}switch مقابل if-else
استخدم switch عندما:
- تقارن تعبيرًا واحدًا بقيم متعددة
- تحتاج إلى switch حسب النوع لتحديد التنفيذ وفق الواجهة
- تتحسن سهولة القراءة مقارنةً بسلسلة من if-else
استخدم if-else عندما تكون الشروط تعبيرات منطقية مختلفة.
break في switch
للخروج مبكرًا من switch، استخدم break. وللخروج من حلقة خارجية من داخل switch، استخدم break مع تسمية:
loop:
for {
switch input() {
case "quit":
break loop // exits the for loop
}
}الحالة الافتراضية
تُنفَّذ حالة default عندما لا تطابق أي حالة أخرى. أفضل الممارسات:
- أدرج دائمًا
defaultعند التعامل مع التعدادات، لالتقاط القيم غير المتوقعة - ضعها في الأسفل لتحسين سهولة القراءة
- في switch حسب النوع، استخدم
defaultللتعامل بسلاسة مع الأنواع غير المدعومة
تحقق سريع
ماذا يحدث في Go عند تطابق حالة في switch — هل ينتقل التنفيذ تلقائيًا إلى الحالة التالية؟
مراجعة: switch في Go
تتميز switch في Go بالوضوح والقوة:
- لا يحدث fallthrough ضمني — استخدم
fallthroughصراحةً - عبارة تهيئة لحصر نطاق القيم المؤقتة
- switch بلا تعبير كبديل لسلسلة if-else
- switch حسب النوع لتحديد التنفيذ وفق الواجهة
- قيم متعددة لكل حالة، مفصولة بفواصل
التالي: التحكم في الحلقات باستخدام break وcontinue والتسميات.
الأسئلة الشائعة
هل درس «عبارات switch في Go» مجاني؟
نعم — نص درس «عبارات switch في Go» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «عبارات switch في Go»؟
switch المعلَّمة وغير المعلَّمة، وfallthrough تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «عبارات switch في Go»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عبارات if وتعبيرات التهيئة
- حلقة for: جميع الأنماط
- عبارات switch في Go
- break وcontinue والتسميات