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

משתנים וסוגים

ב-Go לכל משתנה יש סוג סטטי הידוע למהדר: פעם אחת הוצהר, משתנה אינו יכול לשנות סוג. הנוקשות הזו - שונה מאוד מ-JavaScript או Python - הוא המחיר שאתה משלם כדי לקבל זמן הידור שגיאות במקום שגיאות בזמן ריצה, קבצים בינאריים קטנים וניתנים לחיזוי ביצועים.

שתי צורות הצהרה

var עם סוג מפורש

Go
var name string = "Ada"
var age int = 36
var active bool

כאשר אתה משמיט את הערך (כמו ב-var active bool) המשתנה מקבל את ערך אפס מסוגו — נחזור לזה בשיעור הבא.

הצהרה קצרה :=

בתוך פונקציה אתה יכול להשתמש ב-:=, אשר מסיקה את הסוג מה- ביטוי מימין. זוהי הצורה האידיומטית וזו שבה תשתמש 90% מהמקרים:

Go
name := "Ada"   // string
age := 36        // int
pi := 3.14       // float64
active := true   // bool

הטיפוסים הבסיסיים שתפגשו מיד

הקלדדוגמההערות
int42הגודל תלוי במעבד (32 או 64 סיביות)
float643.14ברירת מחדל עבור מילים עשרוניות
string"Ada"UTF-8, בלתי משתנה
booltrue, falseלא "אמת", רק בול טהור
rune'A'כינוי של int32, מייצג נקודת קוד Unicode
byte0x7Fכינוי של uint8

יש גם int8/16/32/64, uint8/16/32/64, float32 וcomplex64/128 כאשר אתה צריך גדלים מדויקים (ניתוח בינארי, אינטררופ וכו').

הצהרות מרובות

אתה יכול להכריז על מספר משתנים עם בלוק var או ברבים :=:

Go
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 שאינן בשימוש.

Go
func main() {
    x := 42
    // error: x declared and not used
}

כדי להשתיק את הכלל באופן זמני, אתה משתמש ב-_ (מזהה ריק):

Go
_ = x

התור שלך

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

השתמש ב-var כדי להכריז על שם משתנה מסוג מחרוזת עם הערך 'Ada' והדפיס אותו.

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

הצורה הארוכה היא `var <name> <type> = <value>`.

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

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

בשורה בודדת, השתמש ב-:= כדי להקצות 36 לגיל ו-'Roma' לעיר, ולאחר מכן הדפס את שניהם.

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

אתה יכול להקצות משתנים מרובים בו-זמנית: `a, b := 1, "due"`.

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

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

איזו מההצהרות הללו מייצרת שגיאת קומפילציה אם היא ממוקמת מחוץ לפונקציה?

Go
// (a)
var name string = "Ada"

// (b)
age := 36

// (c)
const PI = 3.14
אפשרויות תשובה

לְסַכֵּם

  • סוג סטטי, מוסק אוטומטית על ידי := או מוכרז עם var.
  • := רק בתוך פונקציות; ברמת החבילה בלבד var/const.
  • משתנים וייבוא ​​שאינם בשימוש = שגיאת קומפילציה: השתמש ב-_ כדי להשתיק אותם.
  • int/float64/string/bool מכסים 90% מהמקרים היומיומיים.