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

المصفوفة في Go تسلسل مرقّم من العناصر بطول محدد. في كود Go المعتاد، تكون الشرائح أكثر شيوعًا بكثير؛ وتفيد المصفوفات في بعض الحالات الخاصة.

package main
import "fmt"
func main() {

ننشئ هنا المصفوفة a التي ستحتوي على خمسة عناصر من النوع int بالضبط. يدخل كل من نوع العناصر والطول في نوع المصفوفة. تأخذ المصفوفة افتراضيًا القيمة الصفرية، أي 0 لكل عنصر من النوع int.

    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]]

المثال التالي: .