switch עם `fallthrough`
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 1 מתוך 68.
ב-Go, משפטי switch מבצעים בדרך כלל רק את ה-case התואם ואז יוצאים אוטומטית. עם זאת, מילת המפתח fallthrough משנה את ההתנהגות הזאת בכך שהיא מאלצת את הביצוע להמשיך ל-case הבא, ללא קשר לשאלה אם הוא תואם.
כשמשתמשים ב־fallthrough בסוף של case, Go תבצע את הקוד של ה־case הבא בלי לבדוק את התנאי שלו. זה שונה משפות כמו 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": הדפיסו "HIGH: Immediate attention required!" והמשיכו לביצוע המקרה הבא כדי להדפיס גם את הודעת העדיפות הבינונית - עבור
"medium": הדפיסו "MEDIUM: Please review when possible" - עבור
"low": הדפיסו "LOW: Informational only"
השתמשו במילת המפתח fallthrough כך שהתראות קריטיות יציגו גם הודעות בעדיפות קריטית וגם בעדיפות גבוהה, והתראות בעדיפות גבוהה יציגו גם הודעות בעדיפות גבוהה וגם בעדיפות בינונית.
נסו בעצמכם
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 אונליין