Menu
Coddy logo textTech

הסתרת משתנים בתוך `if`

חלק מהיחידה יסודות במסלול ה-GO של Coddy. שיעור 37 מתוך 109.

בואו נלמד על הצללת משתנים במשפטי if. כך אפשר ליצור משתנה שקיים רק בתוך בלוק ה־if והבלוקים הקשורים אליו של else.

ראשית, בואו ניצור משתנה מחוץ להוראה המותנית שלנו:

x := 10
fmt.Println("Original x value:", x)

לאחר שנריץ את הקוד הזה, יהיה לנו משתנה x עם הערך 10, שבו נוכל להשתמש לאורך כל התוכנית שלנו.

כעת נשתמש בהצללת משתנים במשפט if כדי ליצור משתנה חדש שקיים רק בתוך הבלוק הזה:

if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
    // y קיים רק בבלוק הזה
} else {
    fmt.Println("y is not greater than 15:", y)
    // y זמין גם בבלוקים של else
}

לאחר ביצוע הקוד הזה, Go תחשב את y כ־20 (שהוא x * 2), תבדוק אם הוא גדול מ־15, ואז תבצע את הבלוק הראשון. הפלט יוצג על המסך:

y is greater than 15: 20

לבסוף, ננסה לגשת למשתנים שלנו אחרי פקודת if:

// fmt.Println(y) תגרום לשגיאה - y לא קיים כאן
fmt.Println("x is still:", x)

לאחר ביצוע הקוד הזה, עדיין אפשר לגשת אל x, אבל y כבר אינו זמין כי הוא היה קיים רק בתוך הבלוקים if ו-else. הפלט יוצג על המסך:

x is still: 10

הדוגמה הזו מראה כיצד הצללת משתנים פועלת במשפטי if — אפשר לגשת למשתנה y רק בתוך הבלוקים המותנים שבהם הוא הוכרז.

challenge icon

אתגר

מתחילים

באתגר הזה תתרגל הצללה של משתנים בתוך משפט if. תראה כיצד משתנה שמוצהר בתוך בלוק if יכול להיות בעל שם זהה לזה של משתנה בטווח החיצוני, אך עם ערך שונה.

בקוד יש משתנה message בטווח החיצוני. המשימה שלך היא ליצור משתנה מוצלל בעל אותו שם בתוך בלוק if, ואז להדפיס את שני המשתנים כדי לראות את השפעת ההצללה.

נסו בעצמכם

package main

import "fmt"

func main() {
	// משתנה בתחום החיצוני
	message := "Hello from outer scope"
	
	isLoggedIn := true
	
	if isLoggedIn {
		// TODO: צרו משתנה חדש בשם 'message' עם הערך "Hello from inner scope"
		
		// פעולה זו מדפיסה את ההודעה מהתחום הפנימי
		fmt.Println(message)
	}
	
	// פעולה זו מדפיסה את ההודעה מהתחום החיצוני
	fmt.Println(message)
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Go אונליין