break وcontinue والتسميات
التحكم في تدفق الحلقات وعبارات break المسمّاة
break وcontinue والتسميات درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
أساسيات التحكم في الحلقات
توفر Go ثلاث كلمات مفتاحية للتحكم في تنفيذ الحلقات:
break— تخرج من الحلقة أو switch الحاليةcontinue— تنتقل إلى التكرار التاليgoto— تقفز إلى عبارة تحمل تسمية، وهو أمر نادر الاستخدام
توسّع التسميات نطاق عمل break وcontinue ليشمل الحلقات الخارجية.
break في حلقة
تخرج break فورًا من أقرب عبارة for أو switch أو select داخلية:
for i := 0; i < 100; i++ {
if i*i > 50 {
break
}
fmt.Println(i)
}continue
تتخطى continue بقية جسم الحلقة الحالية وتقفز إلى عبارة ما بعد الحلقة، أو إلى فحص الشرط:
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue // skip even numbers
}
fmt.Println(i) // prints 1,3,5,7,9
}break مع تسمية
تتيح تسمية قبل حلقة for الخروج منها من داخل حلقة داخلية:
search:
for i, row := range grid {
for j, cell := range row {
if cell == target {
fmt.Printf("found at %d,%d\n", i, j)
break search
}
}
}continue مع تسمية
تنتقل continue مع تسمية إلى التكرار التالي للحلقة الخارجية التي تحمل التسمية:
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if j == 1 {
continue outer
}
fmt.Printf("%d,%d\n", i, j)
}
}متى تستخدم التسميات
تكون التسميات مناسبة عندما:
- تحتاج إلى الخروج من حلقة متداخلة من موضع عميق داخلها
- يكون استخراج دالة مستقلة مطولًا أكثر من اللازم
التسميات غير شائعة في Go — وإذا وجدت نفسك تحتاج إليها كثيرًا، ففكّر في إعادة الهيكلة باستخدام الدوال أو القنوات.
goto (نادرًا)
تحتوي Go على goto للقفز إلى عبارة تحمل تسمية. ويسمح باستخدامها داخل الدالة نفسها، ولا يمكنها القفز فوق تعريفات المتغيرات:
- حالات الاستخدام: الشفرة المُولّدة وحلقات معالجة الأخطاء المكثفة
- تجنّب استخدامها في الشفرة المكتوبة يدويًا — وفضّل التحكم المنظم في التدفق
break في select
داخل عبارة select، تخرج break من select، وليس من حلقة for الخارجية. استخدم break مع تسمية للخروج من الحلقة الخارجية:
loop:
for {
select {
case msg := <-ch:
handle(msg)
case <-done:
break loop
}
}تجنّب التداخل العميق
يصعب قراءة الحلقات المتداخلة بعمق. وقبل إضافة break مع تسمية، اسأل نفسك:
- هل يمكنني استخراج الحلقة الداخلية إلى دالة مساعدة؟
- هل يمكنني استخدام قناة أو شريحة لتبسيط التكرار؟
- هل يمكن أن تقلل عمليات الإرجاع المبكرة التداخل على المستوى الخارجي؟
نمط عملي: البحث باستخدام break
نمط شائع: ابحث في مجموعة واخرج باستخدام break عند العثور على العنصر:
func contains(slice []string, target string) bool {
for _, v := range slice {
if v == target {
return true // prefer return over break+flag
}
}
return false
}تحقق سريع
كيف تخرج من حلقة خارجية من داخل حلقة داخلية في Go؟
مراجعة: break وcontinue والتسميات
تحكّم بفعالية في تدفق الحلقات في Go:
- تخرج
breakمن الحلقة أو switch الحالية - تنتقل
continueإلى التكرار التالي - تتيح التسميات توجيه
break/continueإلى حلقة خارجية - توجد
goto، لكنها نادرة الاستخدام في Go الاصطلاحية - داخل select، استخدم break مع تسمية للخروج من حلقة for الخارجية
الدورة التالية: الدوال وقيم الإرجاع المتعددة.
الأسئلة الشائعة
هل درس «break وcontinue والتسميات» مجاني؟
نعم — نص درس «break وcontinue والتسميات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «break وcontinue والتسميات»؟
التحكم في تدفق الحلقات وعبارات break المسمّاة تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «break وcontinue والتسميات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عبارات if وتعبيرات التهيئة
- حلقة for: جميع الأنماط
- عبارات switch في Go
- break وcontinue والتسميات