المسارات
/
Go
Go
/
المنهج
/
الجمل الشرطية switch
ال

الجمل الشرطية switch في Go

1 تمرين

نبذة عن الجمل الشرطية switch

تُقيّم جملة switch تعبيرًا وتُنفّذ أول case يطابق قيمته. وهي غالبًا بديل أنظف من التتابعات الطويلة لـ if ... else if.

الاستخدام الأساسي

operatingSystem := "windows"

switch operatingSystem {
case "windows":
    // do something if the operating system is windows
case "linux":
    // do something if the operating system is linux
case "macos":
    // do something if the operating system is macos
default:
    // do something if the operating system is none of the above
}

يمكن تجميع عدة قيم في case واحد باستخدام فاصلة. ويتحقق التطابق إذا كان التعبير مساويًا لأيٍّ من هذه القيم:

switch operatingSystem {
case "windows", "linux":
    // do something if the operating system is windows or linux
case "macos":
    // do something if the operating system is macos
default:
    // do something if the operating system is none of the above
}

switch بدون تعبير

يمكن أيضًا حذف التعبير الذي يأتي بعد switch تمامًا. عندئذٍ يحمل كل case تعبيرًا منطقيًا، ويُنفَّذ أول case تُقيَّم نتيجته إلى true.

age := 21

switch {
case age > 20 && age < 30:
    // do something if age is between 20 and 30
case age == 10:
    // do something if age is equal to 10
default:
    // do something else for every other case
}

عبارة التهيئة

مثل if، يمكن أن يتضمن switch عبارة تهيئة قصيرة قبل التعبير. والمتغيرات المُعلنة هناك يكون نطاقها محصورًا في كتلة switch:

switch v := getValue(); {
case v < 0:
    // do something if v is less than 0
case v == 0:
    // do something if v is 0
default:
    // do something else for every other case
}
// v will not be accessible here

Fallthrough

يجعل fallthrough جسم الحالة التالية يُنفَّذ بغض النظر عمّا إذا كان تعبيرها مطابقًا أم لا. ويجب أن تكون آخر عبارة في جسم الحالة، ويجب أن توجد حالة تالية يتم الانتقال إليها.

ليس fallthrough شائعًا في أسلوب Go الاصطلاحي لأنه يجعل الحالات المتجاورة مرتبطة ببعضها. ونتيجة لذلك، يصبح من الصعب تحليل كل حالة على حدة، مما يجعل switch أصعب في القراءة. وعندما يُفترض أن يكون سلوك الحالات واحدًا، فإن تجميعها بفاصلة أوضح. وعندما يكون المنطق مشتركًا بين الحالات لأسباب أخرى، ففكّر في استخراج المنطق المشترك إلى دالة مساعدة.

s := "hello"

switch s {
case "hello":
    fmt.Println("hello")
    fallthrough
case "world":
    fmt.Println("world") // also runs, even though s != "world"
}
// Output:
// hello
// world

للتعرّف على المزيد، اطّلع على Go by Example: Switch أو مواصفات لغة Go.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم الجمل الشرطية switch