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

עבור: הלולאה היחידה

ל-Go יש מבנה לולאה בודדת: for. לא while, לא do-while, אין foreach (שמגיע בשיעור הבא עם range). מילת מפתח אחת מכסה את כל המקרים הודות לשלושה צורות.

שלוש הצורות של for

צורה קלאסית של שלושה סעיפים

זהה ל-C/Java:

Go
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

ל-i יש היקף מוגבל ל-for. שלושת הסעיפים הם אופציונליים (אתה יכול להשמיט כל אחד מהם) אבל ה-; נשארים אם תשמיט ביניים.

טופס "בזמן": תנאי בלבד

ב-Go, while הוא פשוט for עם ביטוי bool יחיד:

Go
i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

צורה אינסופית

ללא סעיפים, הלולאה לעולם לא תסתיים (אלא אם כן break/return):

Go
for {
    if exitCondition() {
        break
    }
    doWork()
}

זהו הדפוס לטיפול בלולאות אירועים, שרתים, מדיניות ניסיון חוזר.

break, continue ותוויות

break יוצא מהלולאה הפנימית ביותר, continue מדלג לאיטרציה הבאה:

Go
for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue       // salta i pari
    }
    if i > 7 {
        break          // ferma il ciclo
    }
    fmt.Println(i)     // 1 3 5 7
}

כדי לצאת מלולאות מקוננות יש תוויות (נדיר אך שימושי):

Go
Esterno:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i*j == 4 {
            break Esterno   // esce da entrambi
        }
    }
}

אין אופרטור , כמו ב-C

ב-Go אתה לא יכול לכתוב for i, j := 0, 10; i < j; i, j = i+1, j-1: ביטוי הפוסט אינו מקבל משימות מרובות. השתמש ב-Go's תחביר הקצאות מרובות:

Go
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
    fmt.Println(i, j)
}

זה במקום זאת עובד כי i, j = i+1, j-1 הוא סינגל הקצאה מרובה.

נסה את זה

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

הדפס את המספרים מ-0 עד 4 כולל עם שלוש פסקאות קלאסיות עבור.

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

`עבור init; cond; פוסט { ... }` - כאן ה-init הוא `i ​​:= 0`.

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

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

סכם לסך הכל את כל המספרים מ-1 עד 10 כולל באמצעות הצורה 'בזמן' של for.

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

טופס 'while': `for <condition> { ... }`.

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

Quiz#go.m2.l2.e3
מוכן

איזו צורה מייצגת לולאה אינסופית ב-Go?

Go
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }
אפשרויות תשובה

לְסַכֵּם

  • מילת מפתח אחת for עם שלוש צורות: קלאסי, בעוד, אינסופי.
  • break / continue אופציונלי עם תווית עבור לולאות מקוננות.
  • תווית Name: לפני ה-for, בשימוש במשורה.
  • אין , בתור אופרטור: השתמש בהקצאה המרובה i, j = ..., ....