Menu
Coddy logo textTech

בדיקת חברות בקבוצה

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 34 מתוך 68.

כעת, כשאתם יכולים להוסיף איברים לקבוצה שלכם, הפעולה החשובה הבאה היא לבדוק אם איבר מסוים קיים בקבוצה. כאן הניב "comma ok" של Go נעשה שימושי במיוחד.

כדי לבדוק אם איבר קיים בקבוצה שלך, משתמשים באותו תחביר כמו בבדיקה אם מפתח קיים במפה:

_, 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")
}

בדיקת החברות הזו מהירה ויעילה, ומנצלת את מימוש המפה הממוטב של Go כדי לספק לך את יתרונות הביצועים של מבנה נתונים אמיתי מסוג קבוצה.

challenge icon

אתגר

קל

בנה מערכת לאימות חברי צוות, שבודקת אם אנשים מסוימים שייכים לצוות של פרויקט באמצעות אידיום הקבוצה של Go. האתגר הזה מדגים כיצד להשתמש באידיום comma ok כדי לבדוק חברות בקבוצה.

תקבל שתי קלטים:

  • מחרוזת המכילה חברי צוות המופרדים בפסיקים (למשל, "Alice,Bob,Charlie,Diana,Eve")
  • מחרוזת המכילה אנשים לבדיקה, המופרדים בפסיקים (למשל, "Bob,Frank,Alice,Grace,Charlie")

המשימה שלך היא:

  1. ליצור קבוצה באמצעות האידיום של Go map[string]struct{} כדי לאחסן את חברי הצוות
  2. לנתח את מחרוזת הקלט הראשונה באמצעות פיצול שלה לפי פסיקים, כדי לקבל את השמות של חברי הצוות בנפרד
  3. להוסיף כל חבר צוות לקבוצה שלך באמצעות הערך מסוג struct ריק {}
  4. לנתח את מחרוזת הקלט השנייה באמצעות פיצול שלה לפי פסיקים, כדי לקבל את רשימת האנשים לאימות
  5. עבור כל אדם לבדיקה, להשתמש באידיום comma ok _, ok := teamSet[person] כדי לבדוק חברות בקבוצה
  6. להציג את תוצאות האימות עבור כל אדם שנבדק:
    • אם האדם נמצא בצוות: "[person] is on the 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, ומחזיר גם את הערך וגם ערך בוליאני שמציין אם המפתח קיים.

נסו בעצמכם

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 אונליין