حلقة for هي إحدى العبارات الأكثر استخدامًا لتنفيذ بعض المنطق بشكل متكرر.
في Go تتكوّن من الكلمة المفتاحية for، وترويسة، وكتلة كود تحتوي على جسم الحلقة محاطًا بالأقواس المعقوفة.
تتكوّن الترويسة من 3 مكوّنات تفصل بينها الفواصل المنقوطة ;: التهيئة، والشرط، والخطوة اللاحقة.
for init; condition; post {
// loop body - code that is executed repeatedly as long as the condition is true
}
ملاحظة: بخلاف اللغات الأخرى، لا توجد أقواس هلالية () تحيط بمكوّنات الترويسة الثلاثة.
بل إن إدراج مثل هذه الأقواس يُعد خطأ في الترجمة.
ومع ذلك، فإن الأقواس المعقوفة { } التي تحيط بجسم الحلقة مطلوبة دائمًا.
for: مثالعادةً ما يُهيّئ مكوّن التهيئة متغير عدّاد، ويتحقق مكوّن الشرط مما إذا كان ينبغي مواصلة الحلقة أم إيقافها، وعادةً ما يزيد مكوّن الخطوة اللاحقة العدّاد في نهاية كل تكرار.
for i := 1; i < 10; i++ {
fmt.Println(i)
}
ستطبع هذه الحلقة الأعداد من 1 إلى 9 (بما في ذلك 9).
غالبًا ما يتم تعريف الخطوة باستخدام عبارة زيادة أو إنقاص، كما هو موضح في المثال أعلاه.
أنت مراقب طيور شغوف يتابع عدد الطيور التي زارت حديقتك. عادةً ما تستخدم سجلًّا في دفتر لعدّ الطيور، ولكن للتعامل مع بياناتك بشكل أفضل، رقمنت أعداد الطيور على مدار الأسابيع الماضية.
لنبدأ تحليل البيانات بالحصول على نظرة عامة. اعرف عدد الطيور التي أحصيتها إجمالًا منذ أن بدأت تسجيل بياناتك.
نفّذ دالة TotalBirdCount تستقبل شريحة من قيم int تحتوي على عدد الطيور في كل يوم.
ينبغي أن تُرجع العدد الإجمالي للطيور التي أحصيتها.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34
الآن بعد أن أصبحت لديك فكرة عامة عن أعداد طيورك، تريد إجراء تحليل أكثر تفصيلًا.
نفّذ دالة BirdsInWeek تستقبل شريحة تحتوي على أعداد الطيور في كل يوم ورقم الأسبوع.
تُرجع العدد الإجمالي للطيور التي أحصيتها في ذلك الأسبوع المحدّد. يمكنك افتراض أن الأسابيع تُسجَّل دائمًا بشكل كامل.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12
أدركت أنه طوال الوقت الذي كنت تحاول فيه متابعة الطيور، كان هناك طائر واحد يختبئ في زاوية بعيدة من الحديقة.
اكتشفت أن هذا الطائر كان يقضي يومًا في حديقتك ويغيب في اليوم التالي.
لا تعرف بالضبط أين كان في الأيام الفاصلة بينها، لكنه بالتأكيد لم يكن في حديقتك.
كما يخبرك حدسك كمراقب طيور أن الطائر كان في حديقتك في اليوم الأول الذي سجّلته في قائمتك.
بناءً على هذه المعلومات الجديدة، اكتب دالة FixBirdCountLog تستقبل شريحة تحتوي على أعداد الطيور المُحصاة في كل يوم كوسيط، وتُرجع الشريحة بعد تصحيح خطأ العدّ.
birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
سجّل في Exercism لتتعلّم وتتقن Go عبر 34 مفهومًا166 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.