1 لوپ اسٹیٹمنٹس کا جائزہ
GO زبان میں، لوپ اسٹیٹمنٹس ہمیں کوڈ بلاک کو متعدد مرتبہ execute کرنے کی اجازت دیتے ہیں۔ جب آپ کو کئی عمل کو بار بار کرنا ہوتا ہے تو، لوپ اسٹیٹمنٹس بہترین طریقے سے کام آتے ہیں۔ مثال کے طور پر، آپ کو ایک ایک ایک ارے میں ہر عنصر پر چلنا ہو یا ایک مخصوص شرط پر تکراری عمل کرنا ہو سکتا ہے۔ GO میں، لوپ اسٹیٹمنٹس کو عموماً for
کی مدد سے implement کیا جاتا ہے، جو کہ GO زبان میں واحد لوپ اسٹیٹمنٹ ہے۔ لوپ اسٹیٹمنٹس کا صحیح استعمال اہم ہے تاکہ فعال اور محفوظ کوڈ لکھا جا سکے۔
2 for
لوپ کی بنیادیں
2.1 for
لوپ کی ڈیزائن
GO زبان میں for
لوپ تین حصوں سے مشتمل ہوتا ہے:
- ابتدائیہ اظہار: پہلے iteration سے پہلے execute ہوتا ہے، عام طور پر اس کو لوپ کا کاؤنٹر ڈیکلیئر کرنے کے لئے استعمال کیا جاتا ہے۔
-
شرطی اظہار: ہر iteration سے پہلے evaluate ہوتا ہے۔ اگر شرط
true
ہوتی ہے تو، لوپ بادی execute ہوتا ہے۔ - پوسٹ اظہار: ہر iteration کے بعد کوڈ بلاک کے بعد execute ہوتا ہے، عام طور پر لوپ کا کاؤنٹر اپ ڈیٹ کرنے کے لئے استعمال کیا جاتا ہے۔
for
لوپ کا سنٹیکس مندرجہ ذیل ہوتا ہے:
for ابتدائیہ اظہار; شرطی اظہار; پوسٹ اظہار {
// لوپ بادی کوڈ
}
2.2 for
لوپ کا سادہ مثال
چلیں، ایک سادہ مثال کی مدد سے for
لوپ کی اجرائی پروسیس کو سمجھتے ہیں:
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Println("میں i کی قیمت ہے:", i)
}
}
اس مثال میں، متغیر i
کی ابتدائی قیمت 0
ہے۔ for
لوپ چیک کرتا ہے کہ کیا شرط i < 5
ہے یا نہیں۔ اگر شرط سچ ہوتی ہے، تو لوپ بادی execute ہوتا ہے اور i
کی قیمت پرنٹ ہوتی ہے۔ لوپ بادی کو execute کرنے کے بعد، i
کی قیمت i++
(انکریمنٹ آپریشن) کی مدد سے اپ ڈیٹ ہوتی ہے، اور پھر لوپ شرط چیک کرتا ہے جب تک i
کی قیمت 5
نہیں ہو جاتی، جو مواقع پر شرط غلط ہوتی ہے اور for
لوپ مکمل ہو جاتا ہے۔
2.3 دیگر for
لوپ مثالیں
GO زبان میں for
لوپ بہت ہی مروج ہے اور مختلف صورتوں کے ساتھ لکھا جا سکتا ہے۔
2.3.1 بے حد لوپ
GO میں، آپ for
لوپ کا ابتدائیہ اظہار، شرطی اظہار، اور پوسٹ اظہار کو غیر ضروری کر کے لامحدود لوپ create کر سکتے ہیں، جو کہ کسی خاص شرط یا ایک break
اسٹیٹمنٹ یا کسی فنکشن سے مکمل ہونے تک چلتا رہے گا۔
for {
// بے حد لوپ کے اندر کوڈ
اگر کوئی مخصوص شرط ہو {
break // جب کوئی خاص شرط پوری ہو تو لوپ سے باہر نکلیں
}
}
2.3.2 صرف شرط کے ساتھ لوپ
GO میں، آپ for
لوپ بھی لکھ سکتے ہیں جس میں صرف ایک شرط ہو، دیگر پروگرامنگ زبانوں کی طرح while
لوپ کے مشابہ ہے۔
n := 0
for n < 5 {
fmt.Println(n)
n++
}
مذکورہ بالا کوڈ 0
سے 4
تک چھاپے گا، اور لوپ وقت پر ختم ہو جائے گا جب n
5
تک پہنچ جائے گا۔
2.3.3 ایک ارے یا ایک سلائس کے ذریعے لوپ
GO میں، range
کی کلمہ بھی استعمال کرکے ایک ارے یا ایک سلائس کے ہر عنصر کو آسانی سے iterate کرنے کے لئے استعمال کیا جاتا ہے۔
items := []int{1, 2, 3, 4, 5}
for index, value := range items {
fmt.Printf("انڈیکس: %d, قیمت: %d\n", index, value)
}
مذکورہ بالا کوڈ ہر عنصر کے انڈیکس اور قیمت کو چھاپے گا۔ اگر آپ صرف عناصر کی قیمت چاہتے ہیں، تو آپ _
استعمال کر کے انڈیکس کو نظرانداز کر سکتے ہیں۔
for _, value := range items {
fmt.Printf("قیمت: %d\n", value)
}
نوٹ: ارے کی استعمال کی تشریح آنے والے بابوں میں تفصیل سے کی جائے گی۔ اگر آپ اس حصہ کو نہیں سمجھتے تو کوئی بات نہیں، جب تک آپ کو یہ سمجھ آجاتی ہے کہ
for
لوپ اس طرح سے استعمال کیا جا سکتا ہے۔
2.3.4 نقشوں کا چکر لگانا
جب آپ نقشے کے ذریعے چلتے ہیں تو 'فور' لوپ اور 'رینج' ایکسپریشن کا مجموعہ بہت طاقتور ہوتا ہے۔ یہ آپ کو نقشے کے ہر کلید-قیمت جوڑی حاصل کرنے کی اجازت دیتا ہے۔
colors := map[string]string{"red": "#ff000", "green": "#00ff00", "blue": "#000ff"}
for key, value := range colors {
fmt.Printf("Key: %s, Value: %s\n", key, value)
}
اس مثال میں ہم 'رنگ' نقشے میں تمام کلیدوں اور ان کے موازی قیمتوں کو چھاپتے ہیں۔ مقارنہ کے لئے کچھسیوں کے چکر لگانے کے برابر، اگر آپ صرف کلید یا قیمت چاہتے ہیں تو آپ دوسرے کو نظرانداز کر سکتے ہیں۔
نوٹ: نقشوں کے استعمال کو آنے والے فصول میں تفصیل سے سمجھایا جائے گا۔ اگر آپ اس حصہ کو نہیں سمجھتے ہیں تو کوئی بات نہیں، بس یہ سمجھ لیں کہ 'فور' لوپ اس طرح استعمال ہو سکتا ہے۔
3 لوپس کا جاری رکھنا کا نظم کریں
3.1 بریک
کا استعمال لوپ کا خاتمہ کرنے کے لئے
کبھی کبھار ہمیں لوپ کو جلدی سے باہر نکلنا ہوتا ہے جب ایک خاص شرط پوری ہو جاتی ہے، اور اس طرح کے مواقع میں بریک
اسٹیٹمنٹ کا استعمال کیا جاتا ہے۔ نیچے ایک بریک
سٹیٹمنٹ کا استعمال کرکے لوپ سے باہر نکلنے کا مثال دی گئی ہے:
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i == 5 {
break // جب i کی قیمت 5 ہو تو لوپ سے باہر نکلیں
}
fmt.Println("The value of i is:", i)
}
// اس میں محتوا صرف 0 سے 4 تک کی قیمتوں کو ہی شامل کرے گا
}
3.2 کنٹینیو
کا استعمال انٹریشنز کو چھوڑنے کے لئے
کچھ مواقع پر، ہماری خواہش ہوتی ہے کہ یہ کرنٹ انٹی چھوڑ کر آگے کی انٹی کے ساتھ جاری رہیں۔ یہ کارروائی کنٹینیو
اسٹیٹمنٹ کا استعمال کرکے حاصل کی جا سکتی ہے۔ یہاں ایک مثال ہے:
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i%2 != 0 {
continue // اس انٹی کو چھوڑ دیں اگر i طاق ہو
}
fmt.Println("Even number:", i)
}
}