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

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

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

الوظائف والأساليب في Golang

المباني في Golang

slices وarrays في Golang

النصوص في Golang (String)

مؤشرات Golang

واجهات Golang

التعامل المتوازي في Golang

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

متنوعة Golang

البنية بلغة Go

لغة البرمجة Go تتميز بأنها مشابهة جدًا للغات البرمجة الأخرى. في البرنامج، في بعض الأحيان نحتاج إلى تخزين مجموعة من البيانات من نفس النوع، مثل قائمة درجات الطلاب. هذا النوع من المجموعات يتم تخزينها في البرنامج باستخدام arrays. array هو سلسلة ثابتة الطول تستخدم لتخزين العناصر المتشابهة في ذاكرة النظام. بسبب طوله الثابت، لا يتم تقدير arrays مثل slices في لغة Go.
في المجموعة، يسمح بتخزين صفر عنصر أو أكثر. من خلال استخدام عمودية [] وتحديد موقع العناصر من البداية، مما يعني أن مؤشر العنصر الأول هو}}array [0]،يكون مؤشر آخر العنصر هوarray [len(array)-1]

إنشاء وتحديد Arrays

في لغة Go، يتم إنشاء Arrays بطريقتين مختلفتين:

  • استخدام كلمة المفتاح var:في لغة Go، يتم إنشاء Arrays باستخدام كلمة المفتاح var التي تحتوي على الاسم، الحجم والنوع المحدد.

    النحو:

    Var array_name[length]Type
    أو
    var array_name[length]Typle{item1, item2, item3, ...itemN}

    ملاحظة هامة:

    • في لغة Go، يمكن تعديل Arrays، لذا يمكنك استخدام بناء array [index] في الجانب الأيسر لتعيين عنصر المجموعة في المكان المحدد.

      Var array_name[index] = element[الشكل  Object]
    • يمكنك استخدام قيمة المؤشر أو استخدام حلقة for لزيارة عناصر المجموعة.

    • في لغة Go، نوع Arrays أحادي الأبعاد.

    • طول المجموعة ثابت ولا يمكن تغييره.

    • يمكنك تخزين العناصر المتكررة في المجموعة.

    • //استخدام كلمة المفتاح var لإنشاء مجموعة
      //استخدام قيمة المؤشر لزيارة العناصر
      package main
      import "fmt"
      func main() {
          //استخدام كلمة المفتاح var لإنشاء مجموعة من النوع 字符串
          var myarr [3]string
          //استخدام قيمة المؤشر لتوزيع العناصر
          myarr[0] = "GFG"
          myarr[1] = "ar.oldtoolbag.com"
          myarr[2] = "w3codebox"
          //زيارة عناصر المجموعة
          //استخدام قيمة المؤشر
          fmt.Println("عناصر المصفوفة:")
          fmt.Println("العنصر 1: ", myarr[0])
          fmt.Println("العنصر 2: ", myarr[1])
          fmt.Println("العنصر 3: ", myarr[2])
      {}

      الناتج:

      عناصر المصفوفة:
      العنصر 1:    GFG
      العنصر 2:    ar.oldtoolbag.com
      العنصر 3:    w3codebox
  • استخدام التعبيرات القصيرة:في لغة Go، يمكن استخدام التعبيرات القصيرة أيضًا لتحديد Arrays. إنه أكثر مرونة من الإعلان السابق.

    النحو:

    array_name:= [طول]Type{عنصر1, عنصر2, عنصر3,...عنصرN}[الشكل  Object]
    //استخدام بيان تعريف مختصر للمصفوفة
    //استخدام لفة for لاستدعاء المصفوفة
    package main
    import "fmt"
    func main() {
        //بيان تعريف مصفوفة مختصر
        arr := [4]string{"w3codebox", "gfg", "w3codeboxs1231", "ar.oldtoolbag.com"}
        //العناصر المستدعاة، باستخدام لفة for في المصفوفة
        fmt.Println("عناصر المصفوفة:")
        for ا := 0; ا < 3; ا++ {
            fmt.Println(arr[i])
        {}
    {}

    الناتج:

    عناصر المصفوفة:
    w3codebox
    gfg
    w3codeboxs1231
  • مصفوفات متعددة الأبعاد

    نحن نعلم أن المصفوفة هي أحادية الأبعاد، ولكن يمكن إنشاء مصفوفات متعددة الأبعاد. مصفوفة متعددة الأبعاد هي مصفوفة من مصفوفات. يمكنك استخدام الجملة التالية لإنشاء مصفوفات متعددة الأبعاد في لغة Go:

    Array_name[Length1][Length2]..[LengthN]Type

    يمكنكاستخدام كلمة المفتاح Varأواستخدام بيانات التعريف القصيرةلإنشاء مصفوفات متعددة الأبعاد، مثل المثال التالي.

    ملاحظة:في مصفوفات متعددة الأبعاد، إذا لم يستخدم المستخدم أي قيمة لتحديد خلية معينة، فإن مبرمج المصفوفة يقوم تلقائيًا بتحديد القيمة إلى صفر. لا يوجد مفهوم غير محدد في Golang.

    package main
    import "fmt"
    func main() {
        //إنشاء وإعداد
        //مصفوفة ثنائية
        //استخدام التصريح القصير
        //استخدام (،) الفاصلة للتواصل
        arr := [3][3]string{{"C#", "C", "Python"},
            {"Java", "Scala", "Perl"},
            {"C++", "Go", "HTML"}
        //القيمة المستدعاة
        //استخدام لفة for في المصفوفة
        fmt.Println("عناصر المصفوفة 1")
        for اكس := 0; اكس < 3; اكس++ {
            for ي := 0; ي < 3; ي++ {
                fmt.Println(arr[x][y])
            {}
        {}
        //إنشاء مصفوفة ثنائية
        //استخدام كلمة المفتاح var في المصفوفة
        //وإعدادها
        //استخدام مصفوفة الأبعاد باستخدام مؤشرات
        var arr1 [2][2]int
        arr1[0][0] = 100
        arr1[0][1] = 200
        arr1[1][0] = 300
        arr1[1][1] = 400
        //استدعاء قيمة المصفوفة
        fmt.Println("عناصر المصفوفة 2")
        for ب := 0; ب < 2; ب++ {
            for ق := 0; ق < 2; ق++ {
                fmt.Println(arr1[p][q])
            {}
        {}
    {}

    الناتج:

    عناصر القائمة 1
    C#
    C
    Python
    Java
    Scala
    Perl
    C++
    Go
    HTML
    عناصر القائمة 2
    100
    200
    300
    400

    ملاحظات حول قائمة البيانات

  • في قائمة البيانات، إذا لم يتم تخصيص قائمة البيانات بشكل واضح،هذه القائمة البيانيةالالقيمة الافتراضية هي 0

    package main 
      
    import "fmt"
      
    func main() { 
      
    //إنشاء قائمة بيانات من نوع int، تحتوي على عناصرين
    //في هذا المكان، لم نُبني قائمة البيانات، لذا تكون قيمة القائمة البيانية صفر
    var myarr[2]int 
    fmt.Println("عناصر القائمة: ", myarr) 
      
    {}

    الناتج:

    عناصر القائمة: [0 0]
  • في قائمة البيانات، يمكنكاستخدامطريقة len()الحصولقائمة البياناتالطول،كما هو موضح أدناه:

    package main
    import "fmt"
    func main() {
        //إنشاء قائمة بيانات
        //استخدام التصريح القصير
        arr1 := [...]int{9, 7, 6}
        arr2 := [...]int{9, 7, 6, 4, 5, 3, 2, 4}
        arr3 := [3]int{9, 3, 5}
        //استخدام طريقة len() لتحديد حجم القائمة البيانية
        fmt.Println("طول قائمة البيانات 1 هو:", len(arr1))
        fmt.Println("طول قائمة البيانات 2 هو:", len(arr2))
        fmt.Println("طول قائمة البيانات 3 هو:", len(arr3))
    {}

    الناتج:

    طول قائمة البيانات 1 هو: 3
    طول قائمة البيانات 2 هو: 8
    طول قائمة البيانات 3 هو: 3
  • في قائمة البيانات،إذا كان نقاط المقطوعة " ..."يكون بوضوح في موقع الطول، ويحدد طول القائمة البيانية من العناصر المُستخدمة في التوليد. مثل المثال التالي:

    //استخدام النقاط المقطوعة في القائمة البيانية
    package main
    import "fmt"
    func main() {
        //إنشاء قائمة بيانات حجمها معروف مسبقًا
        //بناءً على عدد العناصر الموجودة
        //استخدام النقاط المقطوعة
        myarray := [...]string{"GFG", "gfg", "w3codeboxs", "ar.oldtoolbag.com", "w3codebox"}
        fmt.Println("عناصر القائمة: ", myarray)
        //طول قائمة البيانات
        //يحددها...
        //استخدام طريقة len()
        fmt.Println("طول قائمة البيانات:", len(myarray))
    {}

    الناتج:

    عناصر القائمة:  [GFG gfg w3codeboxs ar.oldtoolbag.com w3codebox]
    طول قائمة البيانات: 5
  • في قائمة البيانات،يوفر لكفي array للتحرك عبر نطاق عناصر، مثلما يلي:

    //كيفية تحسين قائمة البيانات
    package main
    import "fmt"
    func main() {
        // إنشاء مجموعة، حجمها
        // باستخدام نقاط السطر
        myarray := [...]int{29, 79, 49, 39, 20, 49, 48, 49}
        //استخدام الدوال المكررة لتحسين قائمة البيانات
        for x := 0; x < len(myarray); x++ {
            fmt.Printf("%d\n", myarray[x])
        {}
    {}

    الناتج:

    29
    79
    49
    39
    20
    49
    48
    49
  • في لغة Go،نوع القيمة في المجموعة ليس نوع استدلال، لذلك عندما يتم تخصيص مجموعة لنوع جديد، فإن التغييرات التي يتم إجراؤها في النوع الجديد لن تؤثر على النوع الأصلي. مثلما يلي مثال:

    package main
    import "fmt"
    func main() {
        // إنشاء مجموعة، حجمها
        // باستخدام نقاط السطر
        my_array := [...]int{100, 200, 300, 400, 500}
        fmt.Println("المجموعة الأصلية (قبل التغيير):", my_array)
        // إنشاء متغير جديد
        // واستخدام my_array لتوليد المجموعة الجديدة
        new_array := my_array
        fmt.Println("المجموعة الجديدة (قبل التغيير):", new_array)
        // تغيير القيمة في الموقع 0 إلى 500
        new_array[0] = 500
        fmt.Println("المجموعة الجديدة (بعد التغيير):", new_array)
        fmt.Println("المجموعة الأصلية (بعد التغيير):", my_array)
    {}

    الناتج:

    المجموعة الأصلية (قبل التغيير): [100 200 300 400 500]
    المجموعة الجديدة (قبل التغيير): [100 200 300 400 500]
    المجموعة الجديدة (بعد التغيير): [500 200 300 400 500]
    المجموعة الأصلية (بعد التغيير): [100 200 300 400 500]
  • في المجموعات، إذا كان نوع العناصر قابلاً للمقارنة، فإن نوع المجموعة قابلاً للمقارنة أيضًا. لذلك،يمكننا استخدام عمليات == ل مقارنة مجموعتين من الأعداد مباشرة، مثلما يلي:

    // كيفية مقارنة مجموعتين من الأعداد
    package main
    import "fmt"
    func main() {
        arr1 := [...]int{9, 7, 6}
        arr2 := [...]int{9, 7, 6}
        arr3 := [3]int{9, 5, 3}
        // مقارنة الأنواع باستخدام عمليات ==
        fmt.Println(arr1 == arr2)
        fmt.Println(arr2 == arr3)
        fmt.Println(arr1 == arr3)
        // هذا سيؤدي إلى خطأ لأن
        // arr1 و arr4 غير متطابقين في النوع
        /*
           arr4:= [4]int{9,7,6}
           fmt.Println(arr1==arr4)
        */
    {}

    الناتج:

    true
    false
    false