שיעורי מודול (1/5)
if, else, והצהרות init
ב-Go התחביר if הוא הקלאסי אבל עם שני הבדלים חשובים
בהשוואה ל-C/Java: ללא סוגריים סביב התנאי, וה-
היכולת להכריז על משתנה זמני ישירות ב-if
(הצהרת הפתיחה**).
תחביר בסיסי
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}פלטה חובה, גם עבור בלוקים חד-קוים. ה
התנאי חייב להיות מסוג bool: אין "אמת" כמו Python או JS.
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okהצהרת Init: היקף מוגבל ל-if
אתה יכול להצהיר על משתנה חוקי רק בתוך if/else,
מפריד אותו מהמצב עם ;:
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùזהו הדפוס האידיומטי לטיפול בשגיאות מבלי לזהם את ההיקף החיצוני.
הצללה בהיקף if
אם משתנה חיצוני מקבל "צל" על ידי ה-init, בפנים אם הגרסה המקומית מנצחת. מיד לאחר מכן, החיצוני מופיע מחדש.
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x) // mai stampato (3 < 5)
} else {
fmt.Println("else:", x) // 3
}
fmt.Println("dopo:", x) // 10 — quella esternaאין מפעיל שליש
ל-Go אין cond ? a : b. עבור מטלות מותנות אתה צריך if/else
ב-3-4 שורות - זוהי בחירה עיצובית להעדפת הקריאה.
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}נסה את זה
הדפס 'positivo', '0' או 'negativo' בהתאם לערך של n.
הצג רמז
שרשרת `if / else if / else` עם תנאים על השלט.
הפתרון זמין לאחר 3 ניסיונות
השתמש במשפט init כדי להכריז על v := 42 ב-if והדפיס אותו רק אם v >= 18.
הצג רמז
תחביר: `if init; תנאי { ... }`.
הפתרון זמין לאחר 3 ניסיונות
מה התוכנית הזו מדפיסה?
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x)
} else {
fmt.Println("else:", x)
}
fmt.Println("dopo:", x)לְסַכֵּם
- תנאים ללא סוגריים, פלטה תמיד חובה.
- התנאי חייב להיות
bool: אין אמת מרומזת. - Init
if v, err := f(); err == nil { ... }מגביל את ההיקף שלvוerr. - הצללה ב-init: יש להיזהר לא להצל על משתנים חיצוניים.
- אין שליש: כתוב
if/elseמורחב.