בדיקת חברות בקבוצה
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-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 כדי לספק לך את יתרונות הביצועים של מבנה נתונים אמיתי מסוג קבוצה.
אתגר
קלבנה מערכת לאימות חברי צוות, שבודקת אם אנשים מסוימים שייכים לצוות של פרויקט באמצעות אידיום הקבוצה של Go. האתגר הזה מדגים כיצד להשתמש באידיום comma ok כדי לבדוק חברות בקבוצה.
תקבל שתי קלטים:
- מחרוזת המכילה חברי צוות המופרדים בפסיקים (למשל,
"Alice,Bob,Charlie,Diana,Eve") - מחרוזת המכילה אנשים לבדיקה, המופרדים בפסיקים (למשל,
"Bob,Frank,Alice,Grace,Charlie")
המשימה שלך היא:
- ליצור קבוצה באמצעות האידיום של Go
map[string]struct{}כדי לאחסן את חברי הצוות - לנתח את מחרוזת הקלט הראשונה באמצעות פיצול שלה לפי פסיקים, כדי לקבל את השמות של חברי הצוות בנפרד
- להוסיף כל חבר צוות לקבוצה שלך באמצעות הערך מסוג struct ריק
{} - לנתח את מחרוזת הקלט השנייה באמצעות פיצול שלה לפי פסיקים, כדי לקבל את רשימת האנשים לאימות
- עבור כל אדם לבדיקה, להשתמש באידיום comma ok
_, ok := teamSet[person]כדי לבדוק חברות בקבוצה - להציג את תוצאות האימות עבור כל אדם שנבדק:
- אם האדם נמצא בצוות:
"[person] is on the team" - אם האדם אינו נמצא בצוות:
"[person] is not on the team"
- אם האדם נמצא בצוות:
- לאחר בדיקת כל האנשים, להציג סיכום:
"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
// הציגו את תוצאות הבדיקה וסיכום
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1בקרת זרימה מתקדמת
switch עם `fallthrough`יציאה מלולאות מקוננותהמשך לולאה מסוימתהצהרת `goto`סיכום – שליטה מתקדמת בלולאות4פרויקט: רשימת משימות פשוטה
הגדרת הפרויקטהוספת משימה2מבנים ושיטות
הגדרת שיטות במבניםמקבלי ערךמקבלי מצביעבחירת מקבליםשיטות לעומת פונקציותסיכום — התנהגות המבנים5מפות לעומק
מפות של Structsמצביעים כערכים במפהבדיקה אם מפות הן nilהשוואת מפותסיכום - מונה תדירות מילים8פרויקט: ניהול מלאי פשוט
סקירת הפרויקטבדיקת המלאי3ממשקים (הבסיס)
מהו ממשק?הגדרת ממשקמימוש ממשקשימוש בטיפוסי ממשקממשק ריקבדיקות טיפוסמתג טיפוסיםסיכום – צורות והתנהגויות6קבוצות בסגנון המקובל ב-Go
דפוס הקבוצה ב-Goיצירת קבוצההוספה לקבוצהבדיקת חברות בקבוצההסרה מקבוצהמעבר על איברי קבוצהסיכום – שמות משתמש ייחודייםתרגלו בעצמכם: קומפיילר Go אונליין