הסתרת משתנים בתוך `if`
חלק מהיחידה יסודות במסלול ה-GO של Coddy. שיעור 37 מתוך 109.
נלמד על הסתרת משתנים בהצהרות if. הצהרת if יכולה להצהיר על משתנה לפני התנאי שלה, והמשתנה הזה קיים רק בתוך בלוק ה־if ובלוקי ה־else הקשורים אליו. אם יש לו שם זהה לשם של משתנה מחוץ ל־if, הוא מסתיר את המשתנה החיצוני בתוך הבלוקים האלה.
ראשית, ניצור משתנה מחוץ להצהרת התנאי שלנו:
x := 10
fmt.Println("Original x value:", x)לאחר שנריץ את הקוד הזה, יהיה לנו משתנה x שערכו 10, ונוכל להשתמש בו לאורך כל התוכנית שלנו.
עכשיו, נכריז על משתנה חדש y במשפט if. הוא קיים רק בתוך בלוקי if ו-else:
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 רק בתוך הבלוקים המותנים שבהם הוא הוצהר. אין y חיצוני, ולכן שום דבר לא מוסתר כאן. אילו קראנו לו x במקום זאת, הוא היה מסתיר את ה-x החיצוני בתוך הבלוקים האלה, וה-x החיצוני עדיין היה שווה ל-10 אחריהם.
אתגר
מתחיליםבאתגר הזה תתרגלו הסתרת משתנה בהצהרת 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)
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואה – חלק 1אופרטורי השוואה – חלק 2אופרטור AND לוגיאופרטור OR לוגיאופרטור NOT לוגייסודות קדימות אופרטוריםסיכום – ביצוע השוואות7זרימת בקרה: לולאות
הסבר על לולאת `for`לולאת `for` – בסיסיתלולאת `for` – תנאי בלבדמילת המפתח `break`מילת המפתח `continue`לולאות מקוננותסיכום – חזרה על פעולות2משתנים וסוגי נתונים בסיסיים
מהו משתנההסקת טיפוס באמצעות `:=`מספרים שלמים (int)מספרים בנקודה צפהערכים בוליאנייםמחרוזותערכי אפסקבועיםמוסכמות לשמותסיכום – משתנים וטיפוסים8פונקציות
הבנת פונקציותהצהרה על פונקציהקריאה לפונקציותפרמטרים של פונקציההחזרת ערך יחידהחזרת מספר ערכיםערכי החזרה בעלי שםיסודות תחום ההשפעה של פונקציהסיכום - יצירת קוד לשימוש חוזר3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור חילוקאופרטור מודולואופרטור השמהאופרטורי השמה מורחבתהגדלה והקטנהסיכום – חישובים6זרימת בקרה: תנאים
פקודת `if`מילת המפתח `else`מילת המפתח `else if`הסתרת משתנים בתוך `if`אתחול משתניםפקודת `switch``switch` עם ביטויים`switch` ללא ביטוימילת המפתח `fallthrough`סיכום - קבלת החלטותתרגלו בעצמכם: קומפיילר Go אונליין