في Go يمكن مقارنة الأعداد باستخدام عوامل المقارنة والمساواة التالية.
| المقارنة | العامل |
|---|---|
| يساوي | == |
| لا يساوي | != |
| أصغر من | < |
| أصغر من أو يساوي | <= |
| أكبر من | > |
| أكبر من أو يساوي | >= |
نتيجة المقارنة دائمًا قيمة منطقية، أي إما true أو false.
a := 3
a != 4 // true
a > 5 // false
يمكن أيضًا استخدام عوامل المقارنة أعلاه لمقارنة السلاسل النصية. في هذه الحالة يُطبَّق ترتيب معجمي (قاموسي). على سبيل المثال:
"apple" < "banana" // true
"apple" > "banana" // false
الجمل الشرطية في Go تشبه الجمل الشرطية في لغات أخرى.
النوع الأساسي لأي عملية شرطية هو نوع bool، الذي يمكن أن تكون قيمته true أو false.
غالبًا ما تُستخدم الجمل الشرطية كآليات للتحكم في مسار التنفيذ للتحقق من شروط مختلفة.
للتحقق من حالة معينة يمكن استخدام جملة if، وهي تنفذ الكود إذا كان الشرط true كما يلي:
var value string
if value == "val" {
return "was val"
}
في الحالات التي تتضمن أكثر من حالة، يمكن ربط عدة جمل if معًا باستخدام جملتي else if وelse.
var number int
result := "This number is "
if number > 0 {
result += "positive"
} else if number < 0 {
result += "negative"
} else {
result += "zero"
}
يمكن أن تتضمن جمل if أيضًا عبارة تهيئة قصيرة يمكن استخدامها لتهيئة متغير واحد أو أكثر للجملة الشرطية.
على سبيل المثال:
num := 7
if v := 2 * num; v > 10 {
fmt.Println(v)
} else {
fmt.Println(num)
}
// Output: 14
ملاحظة: أي متغيرات تُنشأ في عبارة التهيئة تخرج من النطاق بعد نهاية الجملة الشرطية.
في هذا التمرين، ستكتب بعض الكود لمساعدتك في الاستعداد لشراء مركبة.
لديك ثلاث مهام: واحدة لتحديد ما إذا كنت تحتاج إلى رخصة، وواحدة لمساعدتك في الاختيار بين مركبتين، وواحدة لتقدير السعر المقبول لمركبة مستعملة.
بعض أنواع المركبات تتطلب رخصة قيادة لتشغيلها.
افترض أن النوعين "car" و "truck" فقط هما اللذان يتطلبان رخصة، وأن كل ما عدا ذلك يمكن تشغيله دون رخصة.
نفّذ الدالة NeedsLicense(kind) التي تأخذ نوع المركبة وتُرجع قيمة منطقية تشير إلى ما إذا كنت تحتاج إلى رخصة لهذا النوع من المركبات.
needLicense := NeedsLicense("car")
// => true
needLicense = NeedsLicense("bike")
// => false
needLicense = NeedsLicense("truck")
// => true
تقيّم خيارات المركبات المتاحة لديك.
تنجح في حصرها في خيارين، لكنك تحتاج إلى مساعدة لاتخاذ القرار النهائي.
ولهذا، نفّذ الدالة ChooseVehicle(option1, option2) التي تأخذ مركبتين كوسائط وتُرجع قرارًا يتضمن الخيار الذي يأتي أولًا في الترتيب المعجمي.
vehicle := ChooseVehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
ChooseVehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
الآن بعد أن اتخذت قرارًا، تريد أن تتأكد من حصولك على سعر عادل لدى الوكيل. وبما أنك مهتم بشراء مركبة مستعملة، يعتمد السعر على عمر المركبة. ولتقدير تقريبي، افترض أنه إذا كان عمر المركبة أقل من 3 سنوات، فإنها تكلف 80% من السعر الأصلي الذي كانت عليه عندما كانت جديدة تمامًا. وإذا كان عمرها 10 سنوات على الأقل، فإنها تكلف 50%. وإذا كان عمر المركبة 3 سنوات على الأقل ولكن أقل من 10 سنوات، فإنها تكلف 70% من السعر الأصلي.
نفّذ الدالة CalculateResellPrice(originalPrice, age) التي تطبق هذا المنطق باستخدام if و else if و else (يمكنك فعل ذلك بأساليب أخرى إن أردت التدريب).
تأخذ السعر الأصلي وعمر المركبة كوسائط وتُرجع السعر المقدّر لدى الوكيل.
CalculateResellPrice(1000, 1)
// => 800
CalculateResellPrice(1000, 5)
// => 700
CalculateResellPrice(1000, 15)
// => 500
ملاحظة: القيمة المُرجعة هي float64.
سجّل في Exercism لتتعلّم وتتقن Go عبر 34 مفهومًا165 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.