English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
دورة for في لغة Go هي جملة تحكم تكرارية تجعلنا نستطيع كتابة دورات تنفيذية لعدد محدد من المرات. يمكن استخدام دورة for في لغة Go بأشكال مختلفة، تشمل:
1. الدورة البسيطة forنحن نستخدم بنية مشابهة في لغات البرمجة الأخرى (مثل C، C ++، Java، C# وما إلى ذلك).
النحو:
للفترة الابتدائية؛ الشروط؛ بعد{ // جملة... }
هنا،
فيالتحضيرية(initialization)اختياري، يستخدم لتنفيذ جملة قبل بدء الدورة. يجب أن تكون جملة التوليد دائمًا في جملة بسيطة، مثل إعلان المتغير، أو جملة التدرج أو جملة التوليد أو استدعاء الدالة.
تتضمن جملة الشرط تعبيرًا بوليانيًا يتم حسابه في بداية كل تكرار للدورة. إذا كانت قيمة جملة الشرط true، يتم تنفيذ الدورة.
تُنفذ جملة post بعد جسم الدورة for. بعد جملة post، يتم حساب قيمة جملة الشرط مرة أخرى لمعرفة ما إذا كانت القيمة false، ثم تنتهي الدورة.
//استخدام الدورة for package main import "fmt" //وظيفة رئيسية func main() { //دورة for //تبدأ هذه الدورة في i = 0 وتستمر حتى يكون i < 4 صحيحًا //جملة post هي i++ for i := 0; i < 4; i++{ fmt.Printf("w3codebox\n") } }
الإخراج:
w3codebox w3codebox w3codebox w3codebox
2. استخدام الدورة for كدورة غير محدودة:يمكن استخدام الدورة for أيضًا كدورة غير محدودة. يمكن أن تكون الدورة for غير محدودة إذا لم يكتب المستخدم أي جملة في الدورة for. يعني ذلك أن جملة الشرط صحيحة، وتدخل الدورة في دورة غير محدودة.
النحو:
for{ //جملة... }
//استخدام دورة غير محدودة package main import "fmt" func main() { //دورة غير محدودة for { fmt.Printf("w3codebox\n") } }
الإخراج:
w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox w3codebox ...........
3. استخدام الدورة for كدورة while: يمكن استخدام الدورة for أيضًا كدورة while. يتم تنفيذ هذه الدورة حتى يصبح شرط المقدمة صحيحًا. تنتهي الدورة عندما يكون قيمة الشرط false.
النحو:
for condition{ //جملة.. }
//دورة for هي مثل دورة while package main import "fmt" func main() { //دورة while //تستمر الدورة for حتى //يكون شرط i < 3 صحيحًا i := 0 for i < 3 { i += 2 } fmt.Println(i) }
الإخراج:
4
4. نطاق بسيط في الدورة for:يمكنك أيضًافي الدورة forاستخدام النطاق.
النحو:
for i, j := range rvariable{ // جملة.. }
هنا،
i وj هي متغيرات توزيع القيم في التكرار. وتسمى أيضًا متغيرات التكرار.
ال متغير الثاني، أي j، هو اختياري.
يتم تقييم تعبير النطاق مرة واحدة قبل بدء الدورة.
package main import "fmt" func main() { //هنا rvariable هو مجموعة rvariable := []string{"GFG", "Geeks", "w3codebox"} //i وj يحتويان على قيم rvariable //i يحتوي على رقم التكرار للحرف الواحد //j يحتوي على حرف واحد من المجموعة المقدمة for i, j := range rvariable { fmt.Println(i, j) } }
الإخراج:
0 جي إف جي 1 جيكس 2 و3codebox
5. استخدام حلقة for مع السلسلة: يمكن لحلقة for التمرير عبر نقاط الت编码 Unicode للسلسلة.
النحو:
for index, chr:= range str{ // جملة.. }
في هذا السياق، هو المتغير الذي يحتوي على البايت الأول من رمز UTF-8، وchr هوالمتغير الذي يحتوي على أحرف السلسلة المحددة، وstrهي سلسلة.
package main import "fmt" func main() { // السلسلة كنطاق لحلقة for for i, j := range "XabCd" { fmt.Printf("%U قيمة المؤشر هي %d\n", j, i) } }
الإخراج:
U+0058 قيمة المؤشر هي 0 U+0061 قيمة المؤشر هي 1 U+0062 قيمة المؤشر هي 2 U+0043 قيمة المؤشر هي 3 U+0064 قيمة المؤشر هي 4
6. استخدام حلقة for مع الخريطة: يمكن لحلقة for التمرير عبرالخريطةمجموعة من الأزواج المفتاح والقيمة.
النحو:
for key, value := range map { // جملة.. }
package main import "fmt" func main() { mmap := map[int]string{ 22: "Geeks", 33: "GFG", 44: "w3codebox", } for key, value := range mmap { fmt.Println(key, value) } }
الإخراج:
22 Geeks 33 GFG 44 w3codebox
7. لحلقة القناة: يمكن لحلقة for التمرير عبر القيم المرسلة على القناة حتى يتم إغلاقها.
النحو:
for item := range Chnl { // جملة.. }
package main import "fmt" func main() { // استخدام القناة chnl := make(chan int) go func() { chnl <- 100 chnl <- 1000 chnl <- 10000 chnl <- 100000 close(chnl) }) for i := range chnl { fmt.Println(i) } }
الإخراج:
100 1000 10000 100000
ملاحظة هامة:
لا يجب استخدام القووس في الثلاثة جمل لحلقة for.
القووس المفتوحة ضرورية في حلقة for.
يجب أن تكون الأسلحة في نفس السطر الذي يحتوي على جملة post.
إذا كانت المجموعة، السلسلة، الشريط أو مجموعة map فارغة، فإن حلقة for لن ترفع خطأ وتستمر في سيرها. بمعنى آخر، إذا كانت المجموعة، السلسلة، الشريط أو مجموعة map غير معرفة، فإن عدد مرات تكرار حلقة for صفر.