دروس الوحدة (2/5)
ل: الحلقة الوحيدة
يحتوي Go على بنية حلقة واحدة: for. لا محمي_INLINE_3، لا
do-while، لا foreach (سيصل في الدرس التالي مع
محمي_INLINE_6). تغطي كلمة رئيسية واحدة جميع الحالات بفضل ثلاثة نماذج.
الأشكال الثلاثة لـ for
نموذج كلاسيكي من ثلاثة عبارات
مطابق لـ C/Java:
for i := 0; i < 5; i++ {
fmt.Println(i)
}i له نطاق محدود بـ for. البنود الثلاثة اختيارية (يمكنك
احذف أيًا منها) ولكن يظل ; إذا حذفت واحدًا متوسطًا.
صيغة "بينما" : شرط فقط
في Go، while هي ببساطة 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
في Go لا يمكنك كتابة for i, j := 0, 10; i < j; i, j = i+1, j-1:
لا يقبل تعبير النشر مهام متعددة. استخدم Go
بناء جملة المهمة المتعددة:
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 شاملةً عبارة "ل" الكلاسيكية المكونة من ثلاثة عبارات.
إظهار التلميح
`للحرف الأول؛ شرط؛ post { ... }` - الحرف الأول هنا هو `i := 0`.
الحل متاح بعد 3 من المحاولات
اجمع إجمالي جميع الأرقام من 1 إلى 10 باستخدام صيغة "while" الخاصة بـ for.
إظهار التلميح
نموذج "أثناء": `لـ <condition> { ... }`.
الحل متاح بعد 3 من المحاولات
ما هو النموذج الذي يمثل حلقة لا نهائية في Go؟
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }خلاصة
- كلمة رئيسية واحدة
forبثلاثة أشكال: كلاسيكية، بينما، لا نهائية. break/continueاختياريًا مع تسمية للحلقات المتداخلة.- استخدم العلامة
Name:قبلforباعتدال. - لا يوجد
,كمشغل: استخدم المهمة المتعددةi, j = ..., ....