break و continue

کنترل جریان حلقه‌ها با break و continue و برچسب‌ها (Labels).

دستور break

break حلقه را فوراً تمام می‌کند:

for i := 1; i <= 10; i++ {
    if i == 5 {
        break   ← حلقه اینجا تمام می‌شود
    }
    fmt.Println(i)
}
// چاپ می‌کند: 1 2 3 4

دستور continue

continue تکرار فعلی را رد می‌کند و به تکرار بعدی می‌رود:

for i := 1; i <= 10; i++ {
    if i%2 == 0 {
        continue   ← اعداد زوج رد می‌شوند
    }
    fmt.Println(i)
}
// چاپ می‌کند: 1 3 5 7 9

مثال عملی: جستجو

numbers := []int{4, 8, 15, 16, 23, 42}
target := 16
found := -1

for i, n := range numbers {
    if n == target {
        found = i
        break   ← پیدا شد، دیگر نگرد
    }
}

if found >= 0 {
    fmt.Println("پیدا شد در موقعیت", found)
} else {
    fmt.Println("پیدا نشد")
}

مثال: فیلتر کردن

words := []string{"go", "", "سریع", "", "ساده"}
for _, w := range words {
    if w == "" {
        continue   ← رشته‌های خالی رد شوند
    }
    fmt.Println(w)
}

برچسب‌ها (Labels)

برای break/continue از حلقه تو در تو، از برچسب استفاده کنید:

outer:                    ← تعریف برچسب
for i := 1; i <= 3; i++ {
    for j := 1; j <= 3; j++ {
        if i*j > 4 {
            break outer   ← هر دو حلقه تمام می‌شوند!
        }
        fmt.Println(i, "*", j, "=", i*j)
    }
}
بدون برچسب، break فقط حلقه داخلی را می‌شکند. با break outer هر دو حلقه فوراً تمام می‌شوند.

جمع‌بندی

دستوراثر
breakپایان فوری حلقه
continueرد شدن از تکرار فعلی
break labelپایان حلقه برچسب‌دار
continue labelرفتن به تکرار بعدی حلقه برچسب‌دار

این مبحث بخشی از دوره آموزش کامل گو است.

ابزارهای مرتبط