مثل لغات البرمجة الأخرى، توفّر Go أيضًا جملة switch.
جمل switch أسلوب أقصر لكتابة سلاسل if ... else if الطويلة.
لإنشاء جملة switch، نبدأ باستخدام الكلمة المفتاحية switch متبوعة بقيمة أو تعبير.
ثم نُعلن كل شرط من الشروط باستخدام الكلمة المفتاحية case.
يمكننا أيضًا إعلان حالة default، تُنفَّذ عندما لا يتحقق أيٌّ من شروط case السابقة:
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
}
من الأمور المثيرة للاهتمام في جمل switch أن القيمة بعد الكلمة المفتاحية switch يمكن حذفها، ويمكننا حينها وضع شروط منطقية لكل case:
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
}
في هذا التمرين سنحاكي الجولة الأولى من لعبة Blackjack.
ستتلقى ورقتين وستتمكن من رؤية ورقة الموزّع المكشوفة. تُمثَّل جميع الأوراق باستخدام سلسلة نصية مثل "ace" و"king" و"three" و"two" وغيرها. وقيمة كل ورقة كما يلي:
| الورقة | القيمة | الورقة | القيمة |
|---|---|---|---|
| ace | 11 | eight | 8 |
| two | 2 | nine | 9 |
| three | 3 | ten | 10 |
| four | 4 | jack | 10 |
| five | 5 | queen | 10 |
| six | 6 | king | 10 |
| seven | 7 | أخرى | 0 |
ملاحظة: عادةً يمكن أن تأخذ أوراق الآس القيمة 1 أو 11، ولكن للتبسيط سنفترض أنها تأخذ القيمة 11 فقط.
بناءً على ورقتيك وورقة الموزّع، توجد استراتيجية للجولة الأولى من اللعبة، لديك فيها الخيارات التالية:
وعلى الرغم من أنها ليست مثالية بعد، ستتبع الاستراتيجية التي كان صديقك Alex يطوّرها، وهي كالتالي:
نفّذ دالة لحساب القيمة العددية لورقة:
value := ParseCard("ace")
fmt.Println(value)
// Output: 11
اكتب دالة تنفّذ منطق القرار كما هو موضح أعلاه:
func FirstTurn(card1, card2, dealerCard string) string
إليك بعض الأمثلة على النتائج المتوقعة:
FirstTurn("ace", "ace", "jack") == "P"
FirstTurn("ace", "king", "ace") == "S"
FirstTurn("five", "queen", "ace") == "H"
سجّل في Exercism لتتعلّم وتتقن Go عبر 35 مفهومًا167 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.