Go-তে সংখ্যা তুলনা করা যায় নিচের সম্পর্ক ও সমতার অপারেটরগুলো দিয়ে।
| তুলনা | অপারেটর |
|---|---|
| সমান | == |
| সমান নয় | != |
| ছোট | < |
| ছোট বা সমান | <= |
| বড় | > |
| বড় বা সমান | >= |
তুলনার ফলাফল সবসময় একটি বুলিয়ান মান, অর্থাৎ true অথবা false।
a := 3
a != 4 // true
a > 5 // false
উপরের তুলনা অপারেটরগুলো দিয়ে স্ট্রিংও তুলনা করা যায়। সেক্ষেত্রে অভিধানভিত্তিক ক্রম প্রয়োগ করা হয়। যেমন:
"apple" < "banana" // true
"apple" > "banana" // false
if স্টেটমেন্টGo-তে শর্তাধীন স্টেটমেন্টগুলো অন্য ভাষার শর্তাধীন স্টেটমেন্টের মতোই।
যেকোনো শর্তাধীন অপারেশনের অন্তর্নিহিত ডেটা টাইপ হলো bool, যার মান হতে পারে true অথবা false।
বিভিন্ন শর্ত যাচাই করতে শর্তাধীন স্টেটমেন্ট প্রায়ই ফ্লো কন্ট্রোলের মাধ্যম হিসেবে ব্যবহৃত হয়।
কোনো নির্দিষ্ট ক্ষেত্র যাচাই করতে একটি if স্টেটমেন্ট ব্যবহার করা যায়, যা অন্তর্নিহিত শর্ত true হলে তার কোড চালায়, এভাবে:
var value string
if value == "val" {
return "was val"
}
একাধিক ক্ষেত্র জড়িত পরিস্থিতিতে else if ও else স্টেটমেন্ট ব্যবহার করে অনেক if স্টেটমেন্ট একসাথে জুড়ে দেওয়া যায়।
var number int
result := "This number is "
if number > 0 {
result += "positive"
} else if number < 0 {
result += "negative"
} else {
result += "zero"
}
if স্টেটমেন্টে একটি ছোট ইনিশিয়ালাইজেশন স্টেটমেন্টও থাকতে পারে, যা দিয়ে if স্টেটমেন্টের জন্য একটি বা একাধিক ভ্যারিয়েবল ইনিশিয়ালাইজ করা যায়।
যেমন:
num := 7
if v := 2 * num; v > 10 {
fmt.Println(v)
} else {
fmt.Println(num)
}
// Output: 14
দ্রষ্টব্য: ইনিশিয়ালাইজেশন স্টেটমেন্টে তৈরি যেকোনো ভ্যারিয়েবল if স্টেটমেন্ট শেষ হওয়ার পর স্কোপের বাইরে চলে যায়।
এই অনুশীলনীতে আপনি একটি যানবাহন কেনার প্রস্তুতি নিতে সাহায্য করার জন্য কিছু কোড লিখবেন।
আপনার সামনে তিনটি কাজ আছে: একটি হলো আপনার লাইসেন্স লাগবে কি না তা নির্ধারণ করা, একটি হলো দুটি যানবাহনের মধ্যে বাছাই করতে সাহায্য করা, আর একটি হলো পুরোনো যানবাহনের গ্রহণযোগ্য দাম অনুমান করা।
কিছু ধরনের যানবাহন চালানোর জন্য ড্রাইভিং লাইসেন্স লাগে।
ধরে নিন, কেবল "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."
এখন যেহেতু সিদ্ধান্ত নেওয়া হয়ে গেছে, আপনি ডিলারশিপে ন্যায্য দাম পাচ্ছেন কি না তা নিশ্চিত করতে চান। যেহেতু আপনি একটি পুরোনো যানবাহন কিনতে আগ্রহী, তাই দাম নির্ভর করে যানবাহনটির বয়স কত তার উপর। মোটা দাগে অনুমান করতে ধরুন, যানবাহনটির বয়স ৩ বছরের কম হলে একেবারে নতুন অবস্থায় যে দাম ছিল তার ৮০% দাম পড়বে। বয়স কমপক্ষে ১০ বছর হলে দাম পড়বে ৫০%। আর যানবাহনটির বয়স কমপক্ষে ৩ বছর কিন্তু ১০ বছরের কম হলে দাম পড়বে মূল দামের ৭০%।
CalculateResellPrice(originalPrice, age) ফাংশনটি বাস্তবায়ন করুন, যা if, else if এবং else ব্যবহার করে এই যুক্তি প্রয়োগ করে (অনুশীলন করতে চাইলে অন্য উপায়ও আছে)।
এটি আর্গুমেন্ট হিসেবে মূল দাম এবং যানবাহনের বয়স নেয় এবং ডিলারশিপে আনুমানিক দামটি রিটার্ন করে।
CalculateResellPrice(1000, 1)
// => 800
CalculateResellPrice(1000, 5)
// => 700
CalculateResellPrice(1000, 15)
// => 500
লক্ষ্য করুন, রিটার্ন ভ্যালুটি একটি float64।
Exercism-এ সাইন আপ করুন, Go ট্র্যাকের 34টি কনসেপ্ট165টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।