ماڈیول اسباق (2/5)
کے لیے: واحد لوپ
Go میں ایک ہی لوپ کنسٹرکٹ ہے: for۔ نہیں while، نہیں۔
do-while، نہیں foreach (جو اگلے سبق میں اس کے ساتھ آتا ہے
range)۔ ایک کلیدی لفظ تین شکلوں کی بدولت تمام صورتوں کا احاطہ کرتا ہے۔
for کی تین شکلیں
کلاسیکی تین شق کی شکل
سی/جاوا سے مماثل:
for i := 0; i < 5; i++ {
fmt.Println(i)
}i کا دائرہ کار for تک محدود ہے۔ تین شقیں اختیاری ہیں (آپ کر سکتے ہیں۔
ان میں سے کسی کو چھوڑ دیں) لیکن ; باقی رہے گا اگر آپ درمیانی کو چھوڑ دیتے ہیں۔
"جبکہ" فارم: صرف شرط
گو میں، جبکہ صرف ایک for ہے جس میں ایک bool اظہار ہے:
i := 0
for i < 5 {
fmt.Println(i)
i++
}لامحدود شکل
شقوں کے بغیر، لوپ کبھی ختم نہیں ہوتا (جب تک break/return):
for {
if exitCondition() {
break
}
doWork()
}یہ ایونٹ ہینڈلنگ لوپس، سرورز، دوبارہ کوشش کرنے کی پالیسیوں کا نمونہ ہے۔
break، continue اور لیبلز
break سب سے اندرونی لوپ سے باہر نکلتا ہے، continue اگلی تکرار پر جاتا ہے:
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue // salta i pari
}
if i > 7 {
break // ferma il ciclo
}
fmt.Println(i) // 1 3 5 7
}نیسٹڈ لوپس سے باہر نکلنے کے لیے لیبل ہیں (نادر لیکن مفید):
Esterno:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i*j == 4 {
break Esterno // esce da entrambi
}
}
}کوئی , آپریٹر نہیں جیسا کہ C میں ہے۔
گو میں آپ for i, j := 0, 10; i < j; i, j = i+1, j-1 نہیں لکھ سکتے:
پوسٹ ایکسپریشن متعدد اسائنمنٹس کو قبول نہیں کرتا ہے۔ گو کا استعمال کریں۔
متعدد تفویض نحو:
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
fmt.Println(i, j)
}اس کے بجائے یہ کام کرتا ہے کیونکہ i, j = i+1, j-1 ایک واحد ہے۔
متعدد تفویض.
اسے آزمائیں
0 سے 4 تک کے نمبروں کو ایک کلاسک تین شق کے ساتھ پرنٹ کریں۔
اشارہ دکھائیں۔
`init کے لئے؛ cond پوسٹ { ... }` — یہاں init ہے `i := 0`۔
3 کوششوں کے بعد حل دستیاب ہے۔
1 سے 10 تک کے تمام نمبروں کو شامل کریں جس میں for کی 'while' فارم استعمال ہوتی ہے۔
اشارہ دکھائیں۔
'جبکہ' فارم: `کیلئے <حالت> { ... }`۔
3 کوششوں کے بعد حل دستیاب ہے۔
کون سی شکل گو میں لامحدود لوپ کی نمائندگی کرتی ہے؟
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }Recap
- ایک کلیدی لفظ
forتین شکلوں کے ساتھ: کلاسک، جبکہ، لامحدود۔ break/continueاختیاری طور پر نیسٹڈ لوپس کے لیبل کے ساتھ۔- لیبل
Name:سے پہلےfor، تھوڑا استعمال کیا جاتا ہے۔ - نہیں
,بطور آپریٹر: ایک سے زیادہ اسائنمنٹi, j = ..., ...استعمال کریں۔