মডিউল পাঠ (1/5)
if, else, এবং init স্টেটমেন্ট
Go ইন if বাক্য গঠনটি ক্লাসিক কিন্তু দুটি গুরুত্বপূর্ণ পার্থক্য সহ
C/Java এর সাথে তুলনা করুন: শর্তের চারপাশে কোন বন্ধনী নেই, এবং
যদি সরাসরি একটি অস্থায়ী পরিবর্তনশীল ঘোষণা করার ক্ষমতা
(init স্টেটমেন্ট)।
মৌলিক সিনট্যাক্স
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}বন্ধনী বাধ্যতামূলক, এমনকি একক লাইন ব্লকের জন্যও। দ
শর্ত অবশ্যই bool টাইপের হতে হবে: পাইথন বা JS-এর মতো "সত্য" নেই।
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okInit স্টেটমেন্ট: সুযোগ যদি সীমিত হয়
আপনি if/else এর ভিতরে একটি ভেরিয়েবল বৈধ শুধু ঘোষণা করতে পারেন,
এটিকে ; দিয়ে শর্ত থেকে আলাদা করা হচ্ছে:
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùএটি বাইরের সুযোগকে দূষিত না করেই ত্রুটিগুলি পরিচালনা করার জন্য একটি বাহাদুরি প্যাটার্ন।
if স্কোপে ছায়া করা
যদি একটি বহিরাগত ভেরিয়েবল "ছায়াযুক্ত" হয় init দ্বারা, ভিতরে যদি স্থানীয় সংস্করণ জয়ী হয়। ঠিক পরে, বাইরেরটি আবার আবির্ভূত হয়।
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 লাইনে - এটি পঠনযোগ্যতার পক্ষে একটি নকশা পছন্দ।
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}চেষ্টা করে দেখুন
n এর মানের উপর নির্ভর করে 'পজিটিভো', 'শূন্য' বা 'নেগেটিভো' প্রিন্ট করুন।
ইঙ্গিত দেখান
`if / else if / else` চিহ্নের শর্ত সহ চেইন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
if-এ v := 42 ডিক্লেয়ার করতে init স্টেটমেন্ট ব্যবহার করুন এবং v >= 18 হলেই প্রিন্ট করুন।
ইঙ্গিত দেখান
সিনট্যাক্স: `if init; শর্ত { ... }`
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
এই প্রোগ্রাম কি মুদ্রণ করে?
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লিখুন।