ট্র্যাক
/
Go
Go
/
সিলেবাস
/
শর্তাধীন Switch
শর

শর্তাধীন Switch মধ্যে Go

১টি অনুশীলনী

শর্তাধীন Switch সম্পর্কে

একটি switch স্টেটমেন্ট একটি এক্সপ্রেশন মূল্যায়ন করে এবং তার মানের সাথে মেলে এমন প্রথম case-টি রান করে। লম্বা if ... else if চেইনের চেয়ে এটি প্রায়শই পরিচ্ছন্ন একটি বিকল্প।

মৌলিক ব্যবহার

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
}

কমা দিয়ে একাধিক মানকে একটি case-এর মধ্যে রাখা যায়। এক্সপ্রেশনটি এদের যেকোনো একটির সমান হলে সেই case মিলে যায়:

switch operatingSystem {
case "windows", "linux":
    // do something if the operating system is windows or 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-এ একটি বুলিয়ান এক্সপ্রেশন থাকে, এবং যেটির মান প্রথমে true হয় সেটিই রান করে।

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
}

ইনিশিয়ালাইজেশন স্টেটমেন্ট

if-এর মতোই একটি switch-এ এক্সপ্রেশনের আগে একটি ছোট ইনিশিয়ালাইজেশন স্টেটমেন্ট থাকতে পারে। সেখানে ঘোষিত ভ্যারিয়েবলগুলো শুধু switch ব্লকের মধ্যেই সীমাবদ্ধ থাকে:

switch v := getValue(); {
case v < 0:
    // do something if v is less than 0
case v == 0:
    // do something if v is 0
default:
    // do something else for every other case
}
// v will not be accessible here

fallthrough

fallthrough পরের case-এর বডি রান করায়, তার এক্সপ্রেশনটি মিলত কি না তা নির্বিশেষে। এটি অবশ্যই case-এর বডির শেষ স্টেটমেন্ট হতে হবে, আর রান করার জন্য একটি পরবর্তী case থাকতে হবে।

ইডিওম্যাটিক Go-তে fallthrough কম দেখা যায়, কারণ এটি পাশাপাশি থাকা case-গুলোকে একে অপরের উপর নির্ভরশীল করে তোলে। ফলে case-গুলোকে আলাদা আলাদা করে ভেবে দেখা কঠিন হয়ে পড়ে, আর switch-টি পড়তেও কষ্ট হয়। কয়েকটি case-এর আচরণ একই হওয়া উচিত হলে, কমা দিয়ে সেগুলো একত্র করাই বেশি স্পষ্ট। আর অন্য কোনো কারণে যদি একাধিক case-এ একই লজিক শেয়ার করা হয়, তবে সেই সাধারণ লজিকটি একটি হেল্পার ফাংশনে সরিয়ে আনার কথা ভাবুন।

s := "hello"

switch s {
case "hello":
    fmt.Println("hello")
    fallthrough
case "world":
    fmt.Println("world") // also runs, even though s != "world"
}
// Output:
// hello
// world

আরও জানতে Go by Example: Switch দেখুন, বা Go ভাষার স্পেসিফিকেশন দেখুন।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে

শর্তাধীন Switch শিখুন