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

קבועים ושיוטה

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

תחביר בסיסי

Go
const PI = 3.14
const MaxRetry int = 5
const Name = "eLearner"

MaxRetry מוקלדת (int): אתה יכול להקצות אותו רק ל-int. PI ו-Name הם לא מודפסים: הם מתנהגים כמו "מילוליים" ומסתגלים ל ההקשר.

Go
const PI = 3.14

var f float32 = PI  // ok: PI è non tipata, diventa float32
var d float64 = PI  // ok

const בלוקים

אתה יכול לקבץ כמה קבועים בבלוק:

Go
const (
    StateInitial = "INIT"
    StateReady   = "READY"
    StateError   = "ERROR"
)

iota: מונה הספירה

בתוך בלוק const, המזהה המיוחד iota מתחיל ב-0 ומעלה ב-1 בכל שורה. זהו הביטוי לביצוע ספירות:

Go
const (
    Monday = iota // 0
    Tuesday       // 1
    Wednesday     // 2
    Thursday      // 3
    Friday        // 4
)

שורות עוקבות יורשות את הביטוי אם הן לא מספקות אחד. זו הסיבה שכתיבת Tuesday מספיקה מבלי לחזור על = iota.

דפוסים עם הבעות

iota יכול להופיע בתוך ביטויים שרירותיים:

Go
const (
    KB = 1 << (10 * (iota + 1)) // 1 << 10 = 1024
    MB                          // 1 << 20
    GB                          // 1 << 30
    TB                          // 1 << 40
)

דילוג על ערך

אם אינך רוצה להקצות ערך לשורה (כי אתה רוצה שiota הגדל בכל מקרה), השתמש במזהה הריק _:

Go
const (
    _  = iota // scarta 0
    KB        // 1
    MB        // 2
)

התור שלך

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

הכריז על PI קבוע עם ערך 3.14 ברמת החבילה, ולאחר מכן הדפס אותו בתוך הראשי.

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

`const PI = 3.14` עובר ברמת החבילה, מחוץ לראשי.

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

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

הגדר בלוק const עם ימי השבוע (שני, שלישי, רביעי) ממוספרים מ-1 באמצעות iota.

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

השתמש ב-'iota + 1' בשורה הראשונה של הבלוק; השורות הבאות יורשות את הביטוי.

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

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

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

Go
const (
    A = iota * 2
    B
    C
)
fmt.Println(A, B, C)
אפשרויות תשובה

לְסַכֵּם

  • const עבור ערכים בלתי ניתנים לשינוי הידועים בזמן ההידור.
  • קבועים לא מודפסים מסתגלים להקשר: אין צורך בהמרה.
  • const ( ... ) חוסם ערכים הקשורים לקבוצה.
  • iota מתחיל ב-0 בכל בלוק ומעלה שורה אחר שורה.
  • תבניות: enum (= iota), מסכת סיביות (= 1 << iota), יחידות (= 1 << (10*iota)).