switch עם `fallthrough`
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 1 מתוך 68.
ב-Go, משפטי switch מבצעים בדרך כלל רק את המקרה המתאים ואז יוצאים אוטומטית. עם זאת, מילת המפתח fallthrough משנה את ההתנהגות הזאת בכך שהיא מאלצת את הביצוע להמשיך למקרה הבא, בלי קשר לשאלה אם הוא מתאים.
כשמשתמשים ב־fallthrough בסוף מקרה, Go תבצע את הקוד של המקרה הבא בלי לבדוק את התנאי שלו. זה שונה משפות כמו C, שבהן צריך להשתמש ב־break כדי למנוע מעבר למקרה הבא.
grade := "B"
switch grade {
case "A":
fmt.Println("Excellent!")
fallthrough
case "B":
fmt.Println("Good job!")
fallthrough
case "C":
fmt.Println("Keep trying!")
}בדוגמה הזו, אם grade הוא "B", יודפסו גם "Good job!" וגם "Keep trying!" בגלל פקודת fallthrough. כך אפשר לבצע כמה פעולות קשורות עבור מקרה תואם יחיד.
אתגר
קלבאתגר הזה תתרגלו שימוש במילת המפתח fallthrough בתוך פקודת switch כדי ליצור מערכת התראות לפי סדרי עדיפויות. כאשר מופעלת התראה בעדיפות גבוהה, המערכת צריכה להציג כמה הודעות אזהרה ברצף.
תקבלו קלט מסוג מחרוזת שמייצג רמת התראה. צרו פקודת switch שמטפלת ברמות התראה שונות ומשתמשת ב-fallthrough כדי להציג הודעות מצטברות עבור התראות בעדיפות גבוהה יותר.
הקלט יהיה אחת מרמות ההתראה הבאות: "critical", "high", "medium" או "low".
פקודת ה-switch שלכם צריכה לפעול כך:
- עבור
"critical": הדפיסו "CRITICAL: System shutdown imminent!" והמשיכו למקרה של high (שממשיך בתורו ל-medium) - עבור
"high": הדפיסו "HIGH: Immediate attention required!" והמשיכו להדפיס גם את הודעת העדיפות medium - עבור
"medium": הדפיסו "MEDIUM: Please review when possible" - עבור
"low": הדפיסו "LOW: Informational only"
מכיוון ש-fallthrough יוצר שרשרת, התראה מסוג "critical" מדפיסה שלוש שורות (CRITICAL, HIGH, MEDIUM), התראה מסוג "high" מדפיסה שתיים (HIGH, MEDIUM), ורמות "medium" ו-"low" מדפיסות שורה אחת כל אחת.
נסו בעצמכם
package main
import "fmt"
func main() {
// קראו את הקלט
var alertLevel string
fmt.Scanln(&alertLevel)
// TODO: כתבו את הקוד שלכם למטה
// צרו משפט switch עם fallthrough עבור מערכת ההתראות
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1בקרת זרימה מתקדמת
switch עם `fallthrough`יציאה מלולאות מקוננותהמשך לולאה מסוימתהצהרת `goto`סיכום – שליטה מתקדמת בלולאות4פרויקט: רשימת משימות פשוטה
הגדרת הפרויקטהוספת משימה2מבנים ושיטות
הגדרת שיטות במבניםמקבלי ערךמקבלי מצביעבחירת מקבליםשיטות לעומת פונקציותסיכום — התנהגות המבנים5מפות לעומק
מפות של Structsמצביעים כערכים במפהבדיקה אם מפות הן nilהשוואת מפותסיכום - מונה תדירות מילים8פרויקט: ניהול מלאי פשוט
סקירת הפרויקטבדיקת המלאיתרגלו בעצמכם: קומפיילר Go אונליין