هل break في Go يقطع فقط switch/select أم أيضًا الحلقة الخارجية؟
مرحبًا بالجميع! بدأت تعلم Go مؤخرًا وواجهت سلوكًا غير متوقع لعامل `break`. لدي حلقة `for` بداخلها `switch`. توقعت أن `break` داخل `case` سيقطع الحلقة، لكن هذا لم يحدث.
إليك مثال مبسط لرمزى:
```go
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
switch i {
case 2:
fmt.Println("وجدنا 2، نخرج من الحلقة!")
break // ظننت أن هذا سيقطع for
default:
fmt.Printf("التكرار %d\n", i)
}
}
fmt.Println("انتهت الحلقة")
}
```
توقعت أنه بعد طباعة "وجدنا 2، نخرج من الحلقة!" ستنهي البرنامج الحلقة وتطبع "انتهت الحلقة". لكن عمليًا يستمر البرنامج في التكرارات: 0، 1، "وجدنا 2"، 3، 4 ثم فقط "انتهت الحلقة".
قرأت أنه في Go، `break` بشكل افتراضي يقطع فقط البنية الأعمق `switch` أو `select` أو `for`. لكن في فهمي، إذا كان `break` موجو