মডিউল পাঠ (4/5)
ইডিওম্যাটিক সুইচ
Go-এর switch C/Java-এর চেয়ে বেশি ergonomic: প্রতিটি case এর আছে
নিজের অন্তর্নিহিত ব্লক (লেখার জন্য break নেই), আপনি গোষ্ঠীভুক্ত করতে পারেন
একটি কমা সহ একাধিক মান, এবং একটি switch একটি অভিব্যক্তি ছাড়াই আচরণ করে
আরও পঠনযোগ্য if/else if চেইন।
একটি মান চালু করুন
giorno := "mar"
switch giorno {
case "lun", "mar", "mer", "gio", "ven":
fmt.Println("feriale")
case "sab", "dom":
fmt.Println("weekend")
default:
fmt.Println("sconosciuto")
}case কমা দ্বারা পৃথক করা একাধিক মান গ্রহণ করে এবং কোন অন্তর্নিহিত নেই
ফলথ্রু: একটি মামলা কার্যকর হওয়ার সাথে সাথে সুইচটি প্রস্থান করে।
শর্ত ছাড়াই সুইচ করুন
আপনি অভিব্যক্তিটি বাদ দিলে, সুইচটি মূল্যায়ন করে true এবং প্রতিটি case একটি
bool শর্ত। এটি দীর্ঘ if/else if চেইনের বাহাদুরিমূলক বিকল্প:
switch {
case x < 0:
fmt.Println("negativo")
case x == 0:
fmt.Println("zero")
case x < 10:
fmt.Println("piccolo")
default:
fmt.Println("grande")
}Init বিবৃতি
if এর মতো, switchও একটি init বিবৃতি গ্রহণ করে:
switch n := len(s); {
case n == 0:
fmt.Println("vuoto")
case n > 100:
fmt.Println("lungo")
default:
fmt.Println("ok")
}n শুধুমাত্র সুইচের ভিতরে বিদ্যমান।
স্পষ্ট fallthrough
আপনি যদি সত্যিই মৃত্যুদণ্ড পরবর্তী ক্ষেত্রে পড়তে চান তবে আপনাকে এটি লিখতে হবে:
switch 1 {
case 1:
fmt.Println("uno")
fallthrough
case 2:
fmt.Println("due") // anche questo viene stampato
case 3:
fmt.Println("tre") // questo no
}টাইপ সুইচ (প্রিভিউ)
এটি আপনাকে একটি ইন্টারফেসের গতিশীল প্রকার এর উপর ভিত্তি করে বৈষম্য করতে দেয় মান আমরা ইন্টারফেস মডিউলে এটিকে গভীরভাবে কভার করব:
var i interface{} = "ciao"
switch v := i.(type) {
case int:
fmt.Println("int:", v)
case string:
fmt.Println("string:", v)
default:
fmt.Printf("tipo %T\n", v)
}চেষ্টা করে দেখুন
lun/mar/mer/gio/ven এর জন্য 'feriale' প্রিন্ট করুন, 'weekend' অন্যথায়, g-এর মান চালু করুন।
ইঙ্গিত দেখান
কমা দ্বারা বিভক্ত একটি একক ক্ষেত্রে 5 সপ্তাহের দিনগুলিকে গোষ্ঠীভুক্ত করুন৷
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
x এর উপর নির্ভর করে 'neg', 'zero' বা 'pos' প্রিন্ট করতে শর্ত ছাড়াই একটি সুইচ ব্যবহার করুন।
ইঙ্গিত দেখান
`সুইচ` এর পরে কোনো অভিব্যক্তি নেই, শুধু `{`।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
এই প্রোগ্রাম কি মুদ্রণ করে?
switch 1 {
case 1:
fmt.Print("a")
case 2:
fmt.Print("b")
}রিক্যাপ
caseকমা দ্বারা পৃথক করা একাধিক মান গ্রহণ করে।- কোন অন্তর্নিহিত পতন হয় না: প্রতিটি ক্ষেত্রের নিজস্ব অন্তর্নিহিত রয়েছে
break৷ switch { ... }একটি অভিব্যক্তি ছাড়া = একটি আরও পাঠযোগ্যif/else ifচেইন।- ইনিট স্টেটমেন্ট:
switch x := f(); { ... }, সুযোগ ব্লকের মধ্যে সীমাবদ্ধ। fallthroughবিদ্যমান কিন্তু বিরল; তার অবস্থার মূল্যায়ন না করেই পরবর্তী ক্ষেত্রে প্রবেশ করে।- ডায়নামিক টাইপের (ইন্টারফেস মডিউল) উপর ভিত্তি করে বৈষম্য করতে সুইচ
v := i.(type)টাইপ করুন।