Go-তে বুলিয়ান প্রকাশ করা হয় পূর্বঘোষিত বুলিয়ান টাইপ bool দিয়ে, যার মান true বা false হতে পারে।
এটি একটি ডিফাইনড টাইপ।
var closed bool // boolean variable 'closed' implicitly initialized with 'false'
speeding := true // boolean variable 'speeding' initialized with 'true'
hasError := false // boolean variable 'hasError' initialized with 'false'
Go তিনটি লজিক্যাল অপারেটর সমর্থন করে, যেগুলো এক্সপ্রেশনকে বুলিয়ান মান পর্যন্ত মূল্যায়ন করতে পারে এবং true বা false রিটার্ন করে।
| অপারেটর | এর অর্থ |
|---|---|
&& (এবং) |
দুটি বিবৃতিই সত্য হলে এটি সত্য হয়। |
|| (অথবা) |
অন্তত একটি বিবৃতি সত্য হলে এটি সত্য হয়। |
! (নয়) |
বিবৃতিটি মিথ্যা হলেই এটি সত্য হয়। |
এই অনুশীলনীতে আপনি একটি নতুন RPG গেমের কুয়েস্ট লজিক বাস্তবায়ন করবেন, যা আপনার এক বন্ধু তৈরি করছে। গেমের মূল চরিত্র Annalyn, একজন সাহসী মেয়ে, যার একটি হিংস্র ও বিশ্বস্ত পোষা কুকুর আছে। দুর্ভাগ্যবশত, বিপর্যয় নেমে আসে, কারণ বনের মধ্যে বেরি খুঁজতে গিয়ে তার সেরা বন্ধুকে অপহরণ করা হয়। Annalyn তার সেরা বন্ধুকে খুঁজে বের করে মুক্ত করার চেষ্টা করবে, আর চাইলে এই কুয়েস্টে তার কুকুরটিকেও সঙ্গে নিয়ে যাবে।
তার সেরা বন্ধুর পথ ধরে কিছু সময় এগোনোর পর, সে সেই শিবির খুঁজে পায় যেখানে তার সেরা বন্ধুকে বন্দি করে রাখা হয়েছে। দেখা যায়, অপহরণকারী দুজন: একজন শক্তিশালী নাইট আর একজন ধূর্ত তিরন্দাজ।
অপহরণকারীদের খুঁজে পাওয়ার পর, Annalyn ভেবে দেখে নিচের কোন কোন কাজ সে করতে পারে:
আপনার চারটি কাজ আছে: বনের মধ্যে পাওয়া তিনটি চরিত্রের অবস্থা এবং Annalyn-এর পোষা কুকুর উপস্থিত আছে কি না, তার ভিত্তিতে উপরের কাজগুলো করা সম্ভব কি না তা নির্ণয়ের লজিক বাস্তবায়ন করা।
CanFastAttack() ফাংশনটি ডিফাইন করুন, যা একটি বুলিয়ান মান নেয় আর তা নির্দেশ করে নাইট জেগে আছে কি না।
নাইটের অবস্থার ভিত্তিতে দ্রুত আক্রমণ করা সম্ভব হলে ফাংশনটি true রিটার্ন করে।
অন্যথায় false রিটার্ন করে:
var knightIsAwake = true
fmt.Println(CanFastAttack(knightIsAwake))
// Output: false
CanSpy() ফাংশনটি ডিফাইন করুন, যা তিনটি বুলিয়ান মান নেয় আর তা যথাক্রমে নির্দেশ করে নাইট, তিরন্দাজ ও বন্দি জেগে আছে কি না।
তিনটি চরিত্রের অবস্থার ভিত্তিতে দলটির উপর গুপ্তচরবৃত্তি করা সম্ভব হলে ফাংশনটি true রিটার্ন করে।
অন্যথায় false রিটার্ন করে:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
fmt.Println(CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake))
// Output: true
CanSignalPrisoner() ফাংশনটি ডিফাইন করুন, যা দুটি বুলিয়ান মান নেয় আর তা যথাক্রমে নির্দেশ করে তিরন্দাজ ও বন্দি জেগে আছে কি না।
দুটি চরিত্রের অবস্থার ভিত্তিতে বন্দিকে সংকেত পাঠানো সম্ভব হলে ফাংশনটি true রিটার্ন করে।
অন্যথায় false রিটার্ন করে:
var archerIsAwake = false
var prisonerIsAwake = true
fmt.Println(CanSignalPrisoner(archerIsAwake, prisonerIsAwake))
// Output: true
CanFreePrisoner() ফাংশনটি ডিফাইন করুন, যা চারটি বুলিয়ান মান নেয়।
প্রথম তিনটি প্যারামিটার যথাক্রমে নির্দেশ করে নাইট, তিরন্দাজ ও বন্দি জেগে আছে কি না।
শেষ প্যারামিটারটি নির্দেশ করে Annalyn-এর পোষা কুকুর উপস্থিত আছে কি না।
তিনটি চরিত্রের অবস্থা এবং Annalyn-এর পোষা কুকুরের উপস্থিতির ভিত্তিতে বন্দিকে মুক্ত করা সম্ভব হলে ফাংশনটি true রিটার্ন করে।
অন্যথায় এটি false রিটার্ন করে:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
var petDogIsPresent = false
fmt.Println(CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent))
// Output: false
Exercism-এ সাইন আপ করুন, Go ট্র্যাকের 34টি কনসেপ্ট165টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।