דילוג לתוכן המרכזי
מודול 2 · שיעור 1 מתוך 56/50 בקורס~10 min
שיעורי מודול (1/5)

if, else, והצהרות init

ב-Go התחביר if הוא הקלאסי אבל עם שני הבדלים חשובים בהשוואה ל-C/Java: ללא סוגריים סביב התנאי, וה- היכולת להכריז על משתנה זמני ישירות ב-if (הצהרת הפתיחה**).

תחביר בסיסי

Go
if temperatura > 30 {
    fmt.Println("caldo")
} else if temperatura > 20 {
    fmt.Println("mite")
} else {
    fmt.Println("fresco")
}

פלטה חובה, גם עבור בלוקים חד-קוים. ה התנאי חייב להיות מסוג bool: אין "אמת" כמו Python או JS.

Go
n := 0
// if n { ... }   // ERRORE: int non è bool
if n != 0 { ... }  // ok

הצהרת Init: היקף מוגבל ל-if

אתה יכול להצהיר על משתנה חוקי רק בתוך if/else, מפריד אותו מהמצב עם ;:

Go
if v, err := call(); err == nil {
    fmt.Println("ok", v)
} else {
    fmt.Println("ko", err)
}
// qui v ed err NON esistono più

זהו הדפוס האידיומטי לטיפול בשגיאות מבלי לזהם את ההיקף החיצוני.

הצללה בהיקף if

אם משתנה חיצוני מקבל "צל" על ידי ה-init, בפנים אם הגרסה המקומית מנצחת. מיד לאחר מכן, החיצוני מופיע מחדש.

Go
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 שורות - זוהי בחירה עיצובית להעדפת הקריאה.

Go
var label string
if age >= 18 {
    label = "adulto"
} else {
    label = "minore"
}

נסה את זה

פעילות גופנית#go.m2.l1.e1
ניסיונות: 0טוען...

הדפס 'positivo', '0' או 'negativo' בהתאם לערך של n.

טוען עורך...
הצג רמז

שרשרת `if / else if / else` עם תנאים על השלט.

הפתרון זמין לאחר 3 ניסיונות

פעילות גופנית#go.m2.l1.e2
ניסיונות: 0טוען...

השתמש במשפט init כדי להכריז על v := 42 ב-if והדפיס אותו רק אם v >= 18.

טוען עורך...
הצג רמז

תחביר: `if init; תנאי { ... }`.

הפתרון זמין לאחר 3 ניסיונות

Quiz#go.m2.l1.e3
מוכן

מה התוכנית הזו מדפיסה?

Go
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 מורחב.