Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التحقق من العضوية في المجموعة

جزء من قسم المنطق وتدفق التنفيذ في رحلة GO على Coddy. الدرس 34 من 68.

الآن بعد أن أصبح بإمكانك إضافة عناصر إلى مجموعتك، فإن العملية الأساسية التالية هي التحقق مما إذا كان عنصر محدد موجودًا في المجموعة. وهنا تصبح طريقة Go الاصطلاحية "comma ok" مفيدة للغاية.

للتحقق مما إذا كان عنصر موجودًا في مجموعة، تستخدم الصياغة نفسها المستخدمة للتحقق من وجود مفتاح في map:

_, ok := colors["red"]
if ok {
    fmt.Println("Red is in the set")
} else {
    fmt.Println("Red is not in the set")
}

يُستخدم الشرطة السفلية _ لأننا لا نهتم بالقيمة الفعلية (والتي تكون دائمًا بنية فارغة). كل ما يهمنا هو المتغير المنطقي ok، الذي يخبرنا ما إذا كان المفتاح موجودًا.

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

if _, exists := colors["blue"]; exists {
    fmt.Println("Blue is in the set")
}

اختبار العضوية هذا سريع وفعّال، إذ يستفيد من تنفيذ map المحسّن في Go ليمنحك مزايا الأداء التي توفرها بنية بيانات مجموعة حقيقية.

challenge icon

التحدي

سهل

أنشئ نظامًا للتحقق من أعضاء team، يفحص ما إذا كان أشخاص محددون جزءًا من فريق مشروع باستخدام اصطلاح Go الخاص بالمجموعة. يوضّح هذا التحدي كيفية استخدام اصطلاح comma ok لاختبار العضوية في مجموعة.

ستتلقى مدخلين:

  • سلسلة تحتوي على أعضاء team مفصولين بفواصل (مثل: "Alice,Bob,Charlie,Diana,Eve")
  • سلسلة تحتوي على أشخاص يجب التحقق منهم، مفصولين بفواصل (مثل: "Bob,Frank,Alice,Grace,Charlie")

مهمتك هي:

  1. إنشاء مجموعة باستخدام اصطلاح Go ‏map[string]struct{} لتخزين أعضاء team
  2. تحليل سلسلة الإدخال الأولى بتقسيمها عند الفواصل للحصول على أسماء أعضاء team الفرديين
  3. إضافة كل عضو من أعضاء team إلى مجموعتك باستخدام قيمة البنية الفارغة {}
  4. تحليل سلسلة الإدخال الثانية بتقسيمها عند الفواصل للحصول على قائمة الأشخاص المطلوب إجراء verification لهم
  5. لكل شخص يجب التحقق منه، استخدم اصطلاح comma ok ‏_, ok := teamSet[person] لاختبار العضوية
  6. عرض نتائج verification لكل شخص قيد التحقق:
    • إذا كان الشخص ضمن team: "[person] is on the team"
    • إذا لم يكن الشخص ضمن team: "[person] is not on the team"
  7. بعد التحقق من جميع الأشخاص، اعرض ملخصًا:
    • "Team size: [team_member_count]"
    • "People checked: [people_checked_count]"
    • "Team members found: [found_count]"
    • "Non-team members: [not_found_count]"

استخدم الحزمة strings لتقسيم سلاسل الإدخال عند الفواصل. يوضّح هذا التحدي كيف يوفّر اصطلاح comma ok طريقة آمنة وفعّالة للتحقق من العضوية في مجموعة Go، إذ يعيد كلًا من القيمة وقيمة منطقية تشير إلى ما إذا كان المفتاح exists.

جرّب بنفسك

package main

import (
	"fmt"
	"strings"
)

func main() {
	// قراءة المدخلات
	var teamMembersInput string
	var peopleToCheckInput string
	fmt.Scanln(&teamMembersInput)
	fmt.Scanln(&peopleToCheckInput)
	
	// تحليل سلاسل المدخلات
	teamMembers := strings.Split(teamMembersInput, ",")
	peopleToCheck := strings.Split(peopleToCheckInput, ",")
	
	// TODO: اكتب الكود الخاص بك أدناه
	// أنشئ مجموعة باستخدام map[string]struct{}
	// أضف أعضاء الفريق إلى المجموعة
	// تحقق من كل شخص باستخدام اصطلاح comma ok
	// اعرض نتائج التحقق والملخص
	
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم Go عبر الإنترنت