الانتقال إلى المحتوى الرئيسي
الوحدة 2 · الدرس 2 من 57/50 في الدورة~10 min
دروس الوحدة (2/5)

ل: الحلقة الوحيدة

يحتوي Go على بنية حلقة واحدة: for. لا محمي_INLINE_3، لا do-while، لا foreach (سيصل في الدرس التالي مع محمي_INLINE_6). تغطي كلمة رئيسية واحدة جميع الحالات بفضل ثلاثة نماذج.

الأشكال الثلاثة لـ for

نموذج كلاسيكي من ثلاثة عبارات

مطابق لـ C/Java:

Go
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

i له نطاق محدود بـ for. البنود الثلاثة اختيارية (يمكنك احذف أيًا منها) ولكن يظل ; إذا حذفت واحدًا متوسطًا.

صيغة "بينما" : شرط فقط

في Go، while هي ببساطة for مع تعبير bool واحد:

Go
i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

شكل لانهائي

بدون عبارات، لا تنتهي الحلقة أبدًا (ما لم break/return):

Go
for {
    if exitCondition() {
        break
    }
    doWork()
}

إنه نمط حلقات معالجة الأحداث والخوادم وسياسات إعادة المحاولة.

break، continue والتسميات

يخرج break من الحلقة الأعمق، وينتقل continue إلى التكرار التالي:

Go
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
}

للخروج من الحلقات المتداخلة هناك علامات (نادرة ولكنها مفيدة):

Go
Esterno:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i*j == 4 {
            break Esterno   // esce da entrambi
        }
    }
}

لا يوجد عامل تشغيل , كما هو الحال في C

في Go لا يمكنك كتابة for i, j := 0, 10; i < j; i, j = i+1, j-1: لا يقبل تعبير النشر مهام متعددة. استخدم Go بناء جملة المهمة المتعددة:

Go
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
    fmt.Println(i, j)
}

هذا يعمل بدلاً من ذلك لأن i, j = i+1, j-1 واحد مهمة متعددة.

جربه

تمرين#go.m2.l2.e1
المحاولات: 0جارٍ التحميل…

اطبع الأرقام من 0 إلى 4 شاملةً عبارة "ل" الكلاسيكية المكونة من ثلاثة عبارات.

جارٍ تحميل المحرر…
إظهار التلميح

`للحرف الأول؛ شرط؛ post { ... }` - الحرف الأول هنا هو `i := 0`.

الحل متاح بعد 3 من المحاولات

تمرين#go.m2.l2.e2
المحاولات: 0جارٍ التحميل…

اجمع إجمالي جميع الأرقام من 1 إلى 10 باستخدام صيغة "while" الخاصة بـ for.

جارٍ تحميل المحرر…
إظهار التلميح

نموذج "أثناء": `لـ <condition> { ... }`.

الحل متاح بعد 3 من المحاولات

Quiz#go.m2.l2.e3
جاهز

ما هو النموذج الذي يمثل حلقة لا نهائية في Go؟

Go
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }
خيارات الإجابة

خلاصة

  • كلمة رئيسية واحدة for بثلاثة أشكال: كلاسيكية، بينما، لا نهائية.
  • break / continue اختياريًا مع تسمية للحلقات المتداخلة.
  • استخدم العلامة Name: قبل for باعتدال.
  • لا يوجد , كمشغل: استخدم المهمة المتعددة i, j = ..., ....