ماڈیول اسباق (1/5)
if، else، اور init بیانات
گو میں if نحو کلاسک ہے لیکن دو اہم اختلافات کے ساتھ
C/Java کے مقابلے: حالت کے ارد گرد کوئی قوسین نہیں، اور
ایک عارضی متغیر کا براہ راست if میں اعلان کرنے کی صلاحیت
(init بیان)۔
بنیادی نحو
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}بریسز لازمی ہیں، یہاں تک کہ سنگل لائن بلاکس کے لیے بھی۔ دی
حالت bool قسم کی ہونی چاہیے: Python یا JS کی طرح کوئی "سچائی" نہیں۔
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okابتدائی بیان: دائرہ کار if تک محدود ہے۔
آپ if/else کے اندر صرف کو درست قرار دے سکتے ہیں،
اسے ; کے ساتھ حالت سے الگ کرنا:
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùیہ بیرونی دائرہ کار کو آلودہ کیے بغیر غلطیوں سے نمٹنے کا محاوراتی نمونہ ہے۔
اگر دائرہ کار میں سایہ کرنا
اگر کوئی بیرونی متغیر init کے ذریعے "shadowed" ہو جاتا ہے، اندر اگر مقامی ورژن جیت جاتا ہے۔ اس کے فوراً بعد، بیرونی دوبارہ ابھرتا ہے۔
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 کی قدر کے لحاظ سے 'positivo'، 'zero' یا 'negativo' پرنٹ کریں۔
اشارہ دکھائیں۔
نشان پر شرائط کے ساتھ `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)Recap
- قوسین کے بغیر شرائط، منحنی خطوط وحدانی ہمیشہ لازمی ہے۔
- شرط
boolہونی چاہئے: کوئی واضح سچائی نہیں۔ - Init
if v, err := f(); err == nil { ... }vاورerrکے دائرہ کار کو محدود کرتا ہے۔ - init میں سایہ کرنا: محتاط رہیں کہ بیرونی متغیرات کو سایہ نہ کریں۔
- کوئی ٹرنری نہیں: ایک توسیع شدہ
if/elseلکھیں۔