মূল কন্টেন্টে যান
মডিউল 2 · 1-এর পাঠ 5কোর্সে 6/50~10 min
মডিউল পাঠ (1/5)

if, else, এবং init স্টেটমেন্ট

Go ইন if বাক্য গঠনটি ক্লাসিক কিন্তু দুটি গুরুত্বপূর্ণ পার্থক্য সহ C/Java এর সাথে তুলনা করুন: শর্তের চারপাশে কোন বন্ধনী নেই, এবং যদি সরাসরি একটি অস্থায়ী পরিবর্তনশীল ঘোষণা করার ক্ষমতা (init স্টেটমেন্ট)।

মৌলিক সিনট্যাক্স

Go
if temperatura > 30 {
    fmt.Println("caldo")
} else if temperatura > 20 {
    fmt.Println("mite")
} else {
    fmt.Println("fresco")
}

বন্ধনী বাধ্যতামূলক, এমনকি একক লাইন ব্লকের জন্যও। দ শর্ত অবশ্যই bool টাইপের হতে হবে: পাইথন বা JS-এর মতো "সত্য" নেই।

Go
n := 0
// if n { ... }   // ERRORE: int non è bool
if n != 0 { ... }  // ok

Init স্টেটমেন্ট: সুযোগ যদি সীমিত হয়

আপনি if/else এর ভিতরে একটি ভেরিয়েবল বৈধ শুধু ঘোষণা করতে পারেন, এটিকে ; দিয়ে শর্ত থেকে আলাদা করা হচ্ছে:

Go
if v, err := call(); err == nil {
    fmt.Println("ok", v)
} else {
    fmt.Println("ko", err)
}
// qui v ed err NON esistono più

এটি বাইরের সুযোগকে দূষিত না করেই ত্রুটিগুলি পরিচালনা করার জন্য একটি বাহাদুরি প্যাটার্ন।

if স্কোপে ছায়া করা

যদি একটি বহিরাগত ভেরিয়েবল "ছায়াযুক্ত" হয় init দ্বারা, ভিতরে যদি স্থানীয় সংস্করণ জয়ী হয়। ঠিক পরে, বাইরেরটি আবার আবির্ভূত হয়।

Go
x := 10
if x := 3; x > 5 {
    fmt.Println("dentro:", x)  // mai stampato (3 < 5)
} else {
    fmt.Println("else:", x)    // 3
}
fmt.Println("dopo:", x)         // 10 — quella esterna

কোন ত্রিদেশীয় অপারেটর

Go এর কোনো cond ? a : b নেই। শর্তসাপেক্ষ অ্যাসাইনমেন্টের জন্য আপনার প্রয়োজন একটি if/else 3-4 লাইনে - এটি পঠনযোগ্যতার পক্ষে একটি নকশা পছন্দ।

Go
var label string
if age >= 18 {
    label = "adulto"
} else {
    label = "minore"
}

চেষ্টা করে দেখুন

ব্যায়াম#go.m2.l1.e1
প্রচেষ্টা: 0লোড হচ্ছে...

n এর মানের উপর নির্ভর করে 'পজিটিভো', 'শূন্য' বা 'নেগেটিভো' প্রিন্ট করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

`if / else if / else` চিহ্নের শর্ত সহ চেইন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#go.m2.l1.e2
প্রচেষ্টা: 0লোড হচ্ছে...

if-এ v := 42 ডিক্লেয়ার করতে init স্টেটমেন্ট ব্যবহার করুন এবং v >= 18 হলেই প্রিন্ট করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

সিনট্যাক্স: `if init; শর্ত { ... }`

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

Quiz#go.m2.l1.e3
প্রস্তুত

এই প্রোগ্রাম কি মুদ্রণ করে?

Go
x := 10
if x := 3; x > 5 {
    fmt.Println("dentro:", x)
} else {
    fmt.Println("else:", x)
}
fmt.Println("dopo:", x)
উত্তরের বিকল্প

রিক্যাপ

  • বন্ধনী ছাড়া শর্ত, বন্ধনী সবসময় বাধ্যতামূলক।
  • শর্তটি bool হতে হবে: কোন অন্তর্নিহিত সত্যতা নেই।
  • Init if v, err := f(); err == nil { ... } v এবং err এর সুযোগ সীমিত করে।
  • init-এ ছায়া করা: বাইরের ভেরিয়েবলগুলিকে ছায়া না দেওয়ার বিষয়ে সতর্ক থাকুন।
  • কোন টারনারি নেই: একটি প্রসারিত if/else লিখুন।