تتميز Go بأنها تستخدم حلقة واحدة فقط هي for، ولكنها مرنة بدرجة كافية لتغطي جميع حالات الاستخدام التي توفرها لغات أخرى عبر while و do-while و foreach. هذا التبسيط يجعل اللغة أسهل في التعلم.
الصيغة التقليدية لحلقة for
تتكون حلقة for التقليدية من ثلاثة أجزاء مفصولة بفواصل منقوطة: تهيئة المتغير، شرط الاستمرار، وعملية التحديث. تنفذ الحلقة طالما الشرط صحيح.
for i := 0; i < 5; i++ {
fmt.Println("التكرار رقم:", i)
}
حلقة for كبديل لـ while
إذا احتجت إلى حلقة تنفذ طالما شرط معين متحقق، فاستخدم for مع شرط فقط بدون تهيئة أو تحديث. هذه الصيغة تكافئ while في اللغات الأخرى.
n := 1
for n < 100 {
n *= 2
}
fmt.Println(n)
الحلقة اللانهائية
لكتابة حلقة لا نهائية، استخدم for بدون أي شرط. تستخدم هذه الصيغة كثيرًا في خوادم الويب وأنظمة المعالجة المستمرة. للخروج منها استخدم العبارة break.
count := 0
for {
count++
if count == 10 {
break
}
}
المرور على المجموعات باستخدام range
تستخدم range مع for للمرور على عناصر مصفوفة أو slice أو map أو سلسلة نصية. تعيد range قيمتين: الفهرس (أو المفتاح) والقيمة.
fruits := []string{"تفاح", "موز", "برتقال"}
for index, fruit := range fruits {
fmt.Println(index, fruit)
}
break و continue
تستخدم break للخروج فوريًا من الحلقة، بينما continue تتخطى التكرار الحالي وتنتقل إلى التكرار التالي. كلاهما مفيد للتحكم الدقيق في تدفق الحلقة.
for i := 0; i < 10; i++ {
if i == 5 {
break
}
if i % 2 == 0 {
continue
}
fmt.Println(i)
}