השוואת מפות
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 29 מתוך 68.
בניגוד לסוגי נתונים רבים אחרים ב-Go, למפות יש מגבלה ייחודית: אי אפשר להשוות אותן ישירות באמצעות האופרטור ==. החריג היחיד לכלל זה הוא השוואת מפה ל-nil.
המשמעות היא שקוד כזה לא יתקמפל:
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
// זה יגרום לשגיאת קומפילציה!
if map1 == map2 {
fmt.Println("Maps are equal")
}עם זאת, אפשר להשוות מפה ל-nil בבטחה:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}כשצריך לבדוק אם שתי מפות מכילות את אותם זוגות מפתח-ערך, צריך לכתוב פונקציה מותאמת אישית שעוברת על שתי המפות ומשווה כל איבר בנפרד. הגישה הזאת מעניקה לך שליטה מלאה בלוגיקת ההשוואה, ומאפשרת לך להגדיר בדיוק מה פירוש "שווה" במקרה השימוש הספציפי שלך.
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1בקרת זרימה מתקדמת
switch עם `fallthrough`יציאה מלולאות מקוננותהמשך לולאה מסוימתהצהרת `goto`סיכום – שליטה מתקדמת בלולאות4פרויקט: רשימת משימות פשוטה
הגדרת הפרויקטהוספת משימה2מבנים ושיטות
הגדרת שיטות במבניםמקבלי ערךמקבלי מצביעבחירת מקבליםשיטות לעומת פונקציותסיכום — התנהגות המבנים5מפות לעומק
מפות של Structsמצביעים כערכים במפהבדיקה אם מפות הן nilהשוואת מפותסיכום - מונה תדירות מילים8פרויקט: ניהול מלאי פשוט
סקירת הפרויקטבדיקת המלאיתרגלו בעצמכם: קומפיילר Go אונליין