Go Academy · درس

التكرار والترتيب

تعامَل مع ترتيب الخرائط العشوائي

الدرس 4 من 413 خطوة

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

التكرار على خريطة

استخدم range للتكرار على خريطة والحصول على كل مفتاح وقيمة.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2}
	for k, v := range m {
		fmt.Println(k, v)
	}
}

الترتيب عشوائي

ترتيب التكرار على الخريطة غير مضمون. إذ تعمد Go إلى جعله عشوائيًا. وقد تطبع الحلقة نفسها المفاتيح بترتيبين مختلفين عند تشغيلها مرتين.

سبب العشوائية

تجعل Go الترتيب عشوائيًا عمدًا حتى لا يعتمد المطورون عن طريق الخطأ على ترتيب محدد. فالشفرة التي تعتمد على ترتيب الخريطة مشكلة تنتظر الظهور.

المفاتيح فقط

احذف القيمة للتكرار على المفاتيح فقط.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2, "c": 3}
	for k := range m {
		fmt.Println(k)
	}
}

جمع المفاتيح

للحصول على نتيجة مستقرة، اجمع المفاتيح أولًا في مقطع.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2, "c": 3}
	keys := []string{}
	for k := range m {
		keys = append(keys, k)
	}
	fmt.Println("collected", len(keys), "keys")
}

فرز المفاتيح

افرز المفاتيح التي جمعتها، ثم كرر على المقطع. يمنحك ذلك ناتجًا مرتبًا وحتميًا.

package main

import (
	"fmt"
	"sort"
)

func main() {
	m := map[string]int{"c": 3, "a": 1, "b": 2}
	keys := []string{}
	for k := range m {
		keys = append(keys, k)
	}
	sort.Strings(keys)
	for _, k := range keys {
		fmt.Println(k, m[k])
	}
}

نمط الناتج المرتب

يُعد نمط الجمع ثم الفرز الطريقة القياسية لطباعة خريطة بترتيب يمكن التنبؤ به. افرز المفاتيح دائمًا عندما يكون ترتيب الناتج مهمًا.

فرز المفاتيح الصحيحة

تعمل الفكرة نفسها مع المفاتيح الرقمية باستخدام sort.Ints.

package main

import (
	"fmt"
	"sort"
)

func main() {
	m := map[int]string{3: "c", 1: "a", 2: "b"}
	keys := []int{}
	for k := range m {
		keys = append(keys, k)
	}
	sort.Ints(keys)
	for _, k := range keys {
		fmt.Println(k, m[k])
	}
}

التعديل أثناء التكرار

يمكنك حذف المفاتيح بأمان أثناء حلقة range. لكن إضافة المفاتيح أثناء التكرار لها سلوك غير معرّف؛ فقد تظهر الإدخالات الجديدة أو لا تظهر.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2, "c": 3}
	for k := range m {
		if k == "b" {
			delete(m, k)
		}
	}
	fmt.Println(len(m))
}

الفرز حسب القيمة

لترتيب العناصر حسب القيمة بدلًا من المفتاح، اجمع المفاتيح ثم افرزها باستخدام مقارنة تقرأ قيم الخريطة.

package main

import (
	"fmt"
	"sort"
)

func main() {
	m := map[string]int{"a": 3, "b": 1, "c": 2}
	keys := []string{}
	for k := range m {
		keys = append(keys, k)
	}
	sort.Slice(keys, func(i, j int) bool {
		return m[keys[i]] < m[keys[j]]
	})
	for _, k := range keys {
		fmt.Println(k, m[k])
	}
}

لا تعتمد أبدًا على الترتيب

الخلاصة المهمة: لا تفترض أبدًا ترتيب التكرار على الخريطة. إذا كان الترتيب مهمًا، فاستخرج المفاتيح إلى مقطع ثم افرزها صراحةً.

تحقق سريع

تحتاج إلى طباعة إدخالات خريطة بترتيب أبجدي حسب المفتاح. ما النهج الصحيح؟

مراجعة

التكرار والترتيب:

  • ترتيب range على الخريطة عشوائي عمدًا
  • اجمع المفاتيح، ثم افرزها، ثم كرر عليها للحصول على ناتج حتمي
  • الحذف أثناء range آمن، أما الإضافة فسلوكها غير معرّف
البدء مجانًا

تعلم Go مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
51
الدروس
203

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

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

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

ماذا ستتعلم في «التكرار والترتيب»؟

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

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

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

كم من الوقت يستغرق درس «التكرار والترتيب»؟

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

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

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

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

  1. البنية الداخلية للخرائط
  2. التحقّق من الوجود
  3. الخرائط بوصفها مجموعات
  4. التكرار والترتيب
← العودة إلى Go Academy