דפוס הקבוצה ב-Go
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 31 מתוך 68.
ב-Go אין מבנה נתונים מובנה של קבוצה כמו בשפות תכנות רבות אחרות. עם זאת, מפתחי Go יצרו פתרון אלגנטי שמשתמש במפות כדי לדמות קבוצות, והתבנית הזאת נעשתה נפוצה כל כך עד שהיא נחשבת לדרך המקובלת לכתוב Go.
האידיומה של קבוצות ב-Go משתמשת במפה שבה חשובים לך רק המפתחות, לא הערכים. מכיוון שצריך לאחסן משהו בתור הערך, מתכנתי Go משתמשים במבנה ריק struct{}. הנה התבנית הבסיסית:
var mySet map[string]struct{}המבנה הריק struct{} מיוחד כי הוא תופס אפס בתים בזיכרון. כך הוא מושלם לקבוצות שבהן צריך רק לעקוב אחר השאלה אם משהו קיים או לא, בלי לבזבז זיכרון על ערכים חסרי משמעות.
הגישה הזאת מנצלת את התכונה הבסיסית של מפתחות במפה: עליהם להיות ייחודיים. כשמוסיפים פריט לקבוצה, למעשה מוסיפים מפתח למפה. ההתנהגות של המפה מבטיחה אוטומטית את הייחודיות, וכך מתקבלת סמנטיקה אמיתית של קבוצה.
בשיעורים הבאים תלמדו ליצור קבוצות, לתפעל אותן ולעבוד איתן באמצעות דפוס Go האידיומטי הזה. הטכניקה הזו נמצאת בשימוש נרחב בבסיסי קוד של Go למעקב אחר פריטים ייחודיים, למימוש אלגוריתמים ולפתרון בעיות שבהן נדרשת בדיקת חברות מהירה.
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1בקרת זרימה מתקדמת
switch עם `fallthrough`יציאה מלולאות מקוננותהמשך לולאה מסוימתהצהרת `goto`סיכום – שליטה מתקדמת בלולאות4פרויקט: רשימת משימות פשוטה
הגדרת הפרויקטהוספת משימה2מבנים ושיטות
הגדרת שיטות במבניםמקבלי ערךמקבלי מצביעבחירת מקבליםשיטות לעומת פונקציותסיכום — התנהגות המבנים5מפות לעומק
מפות של Structsמצביעים כערכים במפהבדיקה אם מפות הן nilהשוואת מפותסיכום - מונה תדירות מילים8פרויקט: ניהול מלאי פשוט
סקירת הפרויקטבדיקת המלאי3ממשקים (הבסיס)
מהו ממשק?הגדרת ממשקמימוש ממשקשימוש בטיפוסי ממשקממשק ריקבדיקות טיפוסמתג טיפוסיםסיכום – צורות והתנהגויות6קבוצות בסגנון המקובל ב-Go
דפוס הקבוצה ב-Goיצירת קבוצההוספה לקבוצהבדיקת חברות בקבוצההסרה מקבוצהמעבר על איברי קבוצהסיכום – שמות משתמש ייחודייםתרגלו בעצמכם: קומפיילר Go אונליין