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 | رفتن به تکرار بعدی حلقه برچسبدار |
این مبحث بخشی از دوره آموزش کامل گو است.