3.6 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Switch in Go | التبديل في الذهاب |
التبديل في الذهاب
بيان التبديل العودة هو بديل ل if . يستخدم بناء الجملة التالي:
fruit := "apple" switch fruit { case "banana": fmt.Printf("Yellow and long.") case "apple": fmt.Printf("Red and round.") case "lemon": fmt.Printf("Yellow and round.") }
سيكون إخراج هذا البرنامج Red and round. .
أولا ، نعلن fruit apple كما apple . ثم نستخدم متغير fruit كتعبير الشرط. يذهب Go يقارن قيمة fruit مع cases المقدمة مثل هذا:
- الفاكهة == "الموز" (كاذبة)
- الفاكهة == "التفاح" (صحيح)
لم يتم اختبار lemon . بعد عودة التقييم ، لا يتم محاكمة أي حالات أخرى.
كما في if ، يمكنك تعريف المتغيرات المؤقتة على تعبير حالة switch`s:
switch fruit := "apple"; fruit { case "banana": fmt.Printf("Yellow and long.") case "apple": fmt.Printf("Red and round.") case "lemon": fmt.Printf("Yellow and round.") }
لن يمكن الوصول إلى fruit المتغيرة خارج بيان التبديل.
الافتراضي وحالات أخرى
افتراضي
الكلمة الأساسية default هي حالة الرجوع إلى الخلف عندما لا تعود أي حالات أخرى صحيحة:
switch fruit := "grape"; fruit { case "banana": fmt.Printf("Yellow and long.") case "apple": fmt.Printf("Red and round.") case "lemon": fmt.Printf("Yellow and round.") default: fmt.Printf("New fruit: %s!", fruit) }
سيكون إخراج هذا البرنامج New fruit: grape! .
نفس الإجراء لقيم مختلفة
قائمة قيم مفصولة بفواصل لمقارنة قيمة تعبير الشرط مع نفس الإجراء.
switch fruit := "lemon"; fruit { case "banana", "lemon": fmt.Printf("Yellow fruit.") default: fmt.Printf("This fruit is a color different than yellow.") }
الإخراج: Yellow fruit. .
لا تعبير
التبديل بدون أي تعبير يعني switch true . هذه نسخة بديلة لسلسلة أخرى.
fruit := "banana" switch { case fruit == "banana": fmt.Printf("Yellow and long.") default: fmt.Printf("This is not a banana.") }
هذا تقييم true == (fruit == "banana") ، simpliefied إلى true == true ، والتي ترجع true.
استراحة
يمكنك كسر التعليمات البرمجية في بيان تبديل لتخطي أي تعليمات برمجية أكثر.
appleColor := "green" switch fruit := "apple"; fruit { case "banana": fmt.Printf("Yellow and long.") case "apple": if appleColor == "green" { fmt.Printf("This apple is green!") break } fmt.Printf("This apple is tasty!") case "lemon": fmt.Printf("Yellow and round.") }
الإخراج: This apple is green! .
وقع خلال
انتقل إلى الحالة التالية ، سواء تم تقييم حالته إلى true.
switch fruit := "banana"; fruit { case "banana": fmt.Printf("Yellow and long.") fallthrough case "apple": fmt.Printf("Red and round.") case "lemon": fmt.Printf("Yellow and round.") }
الإخراج: Yellow and long. Red and round. .