1 لوپ اسٹیٹمنٹس کا جائزہ

GO زبان میں، لوپ اسٹیٹمنٹس ہمیں کوڈ بلاک کو متعدد مرتبہ execute کرنے کی اجازت دیتے ہیں۔ جب آپ کو کئی عمل کو بار بار کرنا ہوتا ہے تو، لوپ اسٹیٹمنٹس بہترین طریقے سے کام آتے ہیں۔ مثال کے طور پر، آپ کو ایک ایک ایک ارے میں ہر عنصر پر چلنا ہو یا ایک مخصوص شرط پر تکراری عمل کرنا ہو سکتا ہے۔ GO میں، لوپ اسٹیٹمنٹس کو عموماً for کی مدد سے implement کیا جاتا ہے، جو کہ GO زبان میں واحد لوپ اسٹیٹمنٹ ہے۔ لوپ اسٹیٹمنٹس کا صحیح استعمال اہم ہے تاکہ فعال اور محفوظ کوڈ لکھا جا سکے۔

2 for لوپ کی بنیادیں

2.1 for لوپ کی ڈیزائن

GO زبان میں for لوپ تین حصوں سے مشتمل ہوتا ہے:

  1. ابتدائیہ اظہار: پہلے iteration سے پہلے execute ہوتا ہے، عام طور پر اس کو لوپ کا کاؤنٹر ڈیکلیئر کرنے کے لئے استعمال کیا جاتا ہے۔
  2. شرطی اظہار: ہر iteration سے پہلے evaluate ہوتا ہے۔ اگر شرط true ہوتی ہے تو، لوپ بادی execute ہوتا ہے۔
  3. پوسٹ اظہار: ہر 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)
    }
}