שיעורי מודול (1/5)
משתנים וסוגים
ב-Go לכל משתנה יש סוג סטטי הידוע למהדר: פעם אחת הוצהר, משתנה אינו יכול לשנות סוג. הנוקשות הזו - שונה מאוד מ-JavaScript או Python - הוא המחיר שאתה משלם כדי לקבל זמן הידור שגיאות במקום שגיאות בזמן ריצה, קבצים בינאריים קטנים וניתנים לחיזוי ביצועים.
שתי צורות הצהרה
var עם סוג מפורש
var name string = "Ada"
var age int = 36
var active boolכאשר אתה משמיט את הערך (כמו ב-var active bool) המשתנה מקבל את
ערך אפס מסוגו — נחזור לזה בשיעור הבא.
הצהרה קצרה :=
בתוך פונקציה אתה יכול להשתמש ב-:=, אשר מסיקה את הסוג מה-
ביטוי מימין. זוהי הצורה האידיומטית וזו שבה תשתמש
90% מהמקרים:
name := "Ada" // string
age := 36 // int
pi := 3.14 // float64
active := true // boolהטיפוסים הבסיסיים שתפגשו מיד
| הקלד | דוגמה | הערות |
|---|---|---|
int | 42 | הגודל תלוי במעבד (32 או 64 סיביות) |
float64 | 3.14 | ברירת מחדל עבור מילים עשרוניות |
string | "Ada" | UTF-8, בלתי משתנה |
bool | true, false | לא "אמת", רק בול טהור |
rune | 'A' | כינוי של int32, מייצג נקודת קוד Unicode |
byte | 0x7F | כינוי של uint8 |
יש גם int8/16/32/64, uint8/16/32/64, float32 וcomplex64/128
כאשר אתה צריך גדלים מדויקים (ניתוח בינארי, אינטררופ וכו').
הצהרות מרובות
אתה יכול להכריז על מספר משתנים עם בלוק var או ברבים :=:
var (
name string = "Ada"
age int = 36
active bool
)
x, y := 10, 20
a, b, c := "a", 2, true // different types: no problemמשתנים שהוצהרו אך לא נעשה בהם שימוש
Go היא קפדנית: משתנה מוצהר ומעולם לא נעשה בו שימוש הוא קומפילציה
שגיאה, לא אזהרה. אותו הדבר חל על imports שאינן בשימוש.
func main() {
x := 42
// error: x declared and not used
}כדי להשתיק את הכלל באופן זמני, אתה משתמש ב-_ (מזהה ריק):
_ = xהתור שלך
השתמש ב-var כדי להכריז על שם משתנה מסוג מחרוזת עם הערך 'Ada' והדפיס אותו.
הצג רמז
הצורה הארוכה היא `var <name> <type> = <value>`.
הפתרון זמין לאחר 3 ניסיונות
בשורה בודדת, השתמש ב-:= כדי להקצות 36 לגיל ו-'Roma' לעיר, ולאחר מכן הדפס את שניהם.
הצג רמז
אתה יכול להקצות משתנים מרובים בו-זמנית: `a, b := 1, "due"`.
הפתרון זמין לאחר 3 ניסיונות
איזו מההצהרות הללו מייצרת שגיאת קומפילציה אם היא ממוקמת מחוץ לפונקציה?
// (a)
var name string = "Ada"
// (b)
age := 36
// (c)
const PI = 3.14לְסַכֵּם
- סוג סטטי, מוסק אוטומטית על ידי
:=או מוכרז עםvar. :=רק בתוך פונקציות; ברמת החבילה בלבדvar/const.- משתנים וייבוא שאינם בשימוש = שגיאת קומפילציה: השתמש ב-
_כדי להשתיק אותם. int/float64/string/boolמכסים 90% מהמקרים היומיומיים.