English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل الأساسيات في Golang

جملة التحكم في Golang

وظائف & طرق Golang

بنية Golang

قطع & Arrays في Golang

كلمات Golang (String)

مؤشرات Golang

واجهات Golang

المشاركة في Golang

استثنائات Golang(Error)

أشياء أخرى في Golang

جملة دورة لغة Go (for)

دورة 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 صفر.