Go بالأمثلة: المصفوفات (Arrays)

في لغة Go، المصفوفة (Array) هي تسلسل مرقم من العناصر ذات طول محدد. في كود Go المعتاد، الشرائح (Slices) أكثر شيوعاً؛ المصفوفات مفيدة في بعض السيناريوهات الخاصة.

package main

import "fmt"

func main() {

هنا نقوم بإنشاء مصفوفة a تتسع لـ 5 أعداد صحيحة (int) بالضبط. نوع العناصر والطول كلاهما جزء من نوع المصفوفة. افتراضياً، تكون المصفوفة ذات قيم صفرية، وهو ما يعني 0 للأعداد الصحيحة.

    var a [5]int
    fmt.Println("emp:", a)

يمكننا تعيين قيمة عند فهرس معين باستخدام صيغة array[index] = value والحصول على قيمة باستخدام array[index].

    a[4] = 100
    fmt.Println("set:", a)
    fmt.Println("get:", a[4])

الدالة المضمنة len تعيد طول المصفوفة.

    fmt.Println("len:", len(a))

استخدم هذه الصيغة للتصريح عن مصفوفة وتهيئتها في سطر واحد.

    b := [5]int{1, 2, 3, 4, 5}
    fmt.Println("dcl:", b)

يمكنك أيضاً جعل المترجم يعد العناصر لك باستخدام ....

    b = [...]int{1, 2, 3, 4, 5}
    fmt.Println("dcl:", b)

إذا حددت الفهرس مع :، فسيتم تصفير العناصر الموجودة بينها.

    b = [...]int{100, 3: 400, 500}
    fmt.Println("idx:", b)

أنواع المصفوفات هي أحادية البعد، ولكن يمكنك تركيب الأنواع لبناء هياكل بيانات متعددة الأبعاد.

    var twoD [2][3]int
    for i := range 2 {
        for j := range 3 {
            twoD[i][j] = i + j
        }
    }
    fmt.Println("2d: ", twoD)

يمكنك إنشاء وتهيئة المصفوفات متعددة الأبعاد دفعة واحدة أيضاً.

    twoD = [2][3]int{
        {1, 2, 3},
        {1, 2, 3},
    }
    fmt.Println("2d: ", twoD)
}

لاحظ أن المصفوفات تظهر بصيغة [v1 v2 v3 ...] عند طباعتها باستخدام fmt.Println.

تشغيل البرنامج:

$ go run arrays.go
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
len: 5
dcl: [1 2 3 4 5]
dcl: [1 2 3 4 5]
idx: [100 0 0 400 500]
2d:  [[0 1 2] [1 2 3]]
2d:  [[1 2 3] [1 2 3]]

المثال التالي: الشرائح (Slices).