0Pricing
Go Academy · درس

التكرار على المجموعات باستخدام range

استخدام range مع الشرائح والخرائط والسلاسل النصية

التكرار على المجموعات باستخدام range درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

ما range؟

يُعدّ range صيغة خاصة من حلقة for تكرّر على المصفوفات والشرائح والخرائط والسلاسل النصية والقنوات. وتُرجع فهرسًا (أو مفتاحًا) وقيمةً في كل تكرار.

استخدام range مع شريحة

يعيد الفهرس ونسخة من العنصر:

package main
import "fmt"

func main() {
    fruits := []string{"apple", "banana", "cherry"}
    for i, fruit := range fruits {
        fmt.Printf("%d: %s\n", i, fruit)
    }
}

استخدام range مع مصفوفة

يعمل بالطريقة نفسها مع الشرائح. تُنسخ عناصر المصفوفة في كل تكرار:

package main
import "fmt"

func main() {
    nums := [3]int{10, 20, 30}
    for _, v := range nums {
        fmt.Println(v)
    }
}

استخدام range مع خريطة

يعيد المفتاح والقيمة بترتيب عشوائي:

package main
import "fmt"

func main() {
    capitals := map[string]string{
        "France": "Paris",
        "Japan":  "Tokyo",
    }
    for country, city := range capitals {
        fmt.Printf("%s -> %s\n", country, city)
    }
}

استخدام range مع سلسلة نصية

يتكرر على نقاط ترميز Unicode (rune) وليس البايتات. والفهرس هو موضع البايت الذي تبدأ عنده نقطة الترميز:

package main
import "fmt"

func main() {
    for i, r := range "héllo" {
        fmt.Printf("%d: %c\n", i, r)
    }
}

تجاهل الفهرس

استخدم _ لتجاهل الفهرس عندما تحتاج إلى القيم فقط:

package main
import "fmt"

func main() {
    total := 0
    for _, v := range []int{1, 2, 3, 4, 5} {
        total += v
    }
    fmt.Println(total) // 15
}

range يعيد الفهرس فقط

يؤدي حذف القيمة إلى الحصول على الفهرس فقط. وهذا مفيد للتعديل في المكان:

package main
import "fmt"

func main() {
    s := []int{1, 2, 3}
    for i := range s {
        s[i] *= 2
    }
    fmt.Println(s) // [2 4 6]
}

استخدام range مع قناة

يقرأ range من القناة حتى إغلاقها:

package main
import "fmt"

func main() {
    ch := make(chan int, 3)
    ch <- 1; ch <- 2; ch <- 3
    close(ch)
    for v := range ch {
        fmt.Println(v)
    }
}

مأزق متغير الحلقة

يُعاد استخدام متغير range في كل تكرار — ويُعد التقاط عنوانه داخل goroutine أو closure خطأً شائعًا:

package main
import "fmt"

func main() {
    nums := []int{1, 2, 3}
    funcs := make([]func(), 3)
    for i, v := range nums {
        v := v // shadow with a copy
        funcs[i] = func() { fmt.Println(v) }
    }
    for _, f := range funcs { f() } // 1 2 3
}

تعديل عناصر الشريحة

قيمة range هي نسخة. وللتعديل، استخدم الفهرس:

package main
import "fmt"

func main() {
    s := []int{10, 20, 30}
    for i := range s {
        s[i]++
    }
    fmt.Println(s) // [11 21 31]
}

تحقق سريع

عند التكرار على سلسلة نصية باستخدام range، ما نوع متغير القيمة؟

مراجعة: range

أهم النقاط:

  • يعمل range مع الشرائح والمصفوفات والخرائط والسلاسل النصية والقنوات
  • يعيد (الفهرس، القيمة) — ويمكن تجاهل أيٍّ منهما باستخدام _
  • قيم range هي نسخ — عدّل عبر الفهرس
  • تنتج السلاسل النصية قيم rune، وليس بايتات
  • ترتيب التكرار على الخريطة عشوائي

مهمة تدريبية

استخدم range لحساب مجموع جميع القيم في map[string]int، واطبع كل إدخال والمجموع الكلي.

الأسئلة الشائعة

هل درس «التكرار على المجموعات باستخدام range» مجاني؟

نعم — نص درس «التكرار على المجموعات باستخدام range» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «التكرار على المجموعات باستخدام range»؟

استخدام range مع الشرائح والخرائط والسلاسل النصية تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «التكرار على المجموعات باستخدام range»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المصفوفات: مجموعات ثابتة الطول
  2. الشرائح: قوائم ديناميكية
  3. الخرائط: مخازن المفتاح والقيمة
  4. التكرار على المجموعات باستخدام range
← العودة إلى Go Academy