تستخدم المصفوفات في عالم البرمجة لتخزين مجموعة من العناصر من نفس النوع تحت اسم متحول واحد بدلا من متحولات متعددة. وتكون هذه العناصر متوضعة بجانب بعضها البعض في الذاكرة.
في لغة البرمجة GO يوجد أكثر من نوع من المصفوفات. وأبسطها من حيث المفهوم هو ما يسمى Array والتي يمكن تعريفها حسب القاعدة المبينة في الشكل التالي:
var array_name = [length]datatype{values}
- حيث الكلمة var تعني تعريف متحول
- ثم يليها اسم المصفوفة مثلا array_name .
- ثم اشارة المساواة لنحدد بعدها محتوى هذه المصفوفة.
- ثم بين قوسين مربعة نكتب طول المصفوفة والذي يعبر عن عدد العناصر فيها.
- ثم بعدها نوع البيانات لعناصر المصفوفة.
- ثم بين قوسين نكتب القيم التي تعتبر القيم الإفتراضية لعناصر المصفوفة.
يمكن ايضاً استخدام طريقة الإسناد كما هو الحال في تعريف المتغيرات لتعريف المصفوفة بدون الحاجة لكتابة كلمة var
المثال التالي يوضح ذلك بشكل مفصل:
var arr1 = [3]int{1,2,3} arr2 := [5]int{5,4,3,2,1} fmt.Println(arr1) fmt.Println(arr2)
المصفوفة arr1 قمنا بتعريفها على انها تتكون من 3 عناصر من نوع int . وحددنا قيم عناصرها.
المصفوفة arr2 عرفناها بطريقة الإسناد. وعدد عناصرها 5 . وكذلك حددنا قيم جميع عناصرها.
ثم بعد ذلك قمنا بطباعة عناصر المصفوفات على الشاشة باستخدام تعليمة Println .
ونتيجة تنفيذ البرنامج هي طباعة التالي على الشاشة:
[1 2 3] [5 4 3 2 1]
يمكن أن نعرف المصفوفة بدون تحديد العدد. بحيث يتم تحديد طول المصفوفة بعدد القيم التي نقوم بكتابتها , مع مراعاة أن نضع ثلاث نقاط بين قوسين بدل طول المصفوفة.
كما في الشكل التالي:
var arr = [...]int{1,2,3}
يمكن أيضا تعريف مصفوفة بدون تحديد القيم الافتراضية لعناصرها . أو يمكن تحديد قيم بعضها وترك الباقي كما في الشكل :
arr1 := [3]int{} arr2 := [5]int{1,2}
هنا المصفوفة الأولى عناصرها من نوع int وعددها 3 . وبما اننا لم نحدد قيم العناصر ستكون جميعهها تساوي القيمة 0 .
والمصفوفة الثانية عدد عناصرها 5 . وقمنا بتحديد قيم أول عنصرين منها فقط.
أما عندما نريد تحديد قيمة عنصر معين من المصفوفة دون باقي العناصر. فنستخدم الطريقة التالي:
arr := [5]int{1:77, 3:88} fmt.Println(arr)
حيث المصفوفة arr تتكون من 5 عناصر من النوع int.
وقمنا بتحديد العنصر ذو العنوان 1 بالقيمة 77
وكذلك العنصر ذو العنوان 3 له القيمة 88
وبتنفيذ هذه التعليمات نشاهد النتيجة التالية على الشاشة:
[0 77 0 88 0]
المصفوفات من النوع Slices
في لغة البرمجة GO يجب أن تكون المصفوفات Arrays ذات طول محدد مسبقا وثابت لا يتغير.
أما المصفوفات من النوع Slices فهي نوع خاص يمكن ان ينمو حسب الحاجة.
يمكن تعريف المصفوفات من هذا النوع بنفس طريقة تعريف المصفوفات العادية ولكن بدون تحديد الطول , كما في المثال التالي:
var x = []int{5, 9, 11, 77} fmt.Println(x) fmt.Println(len(x))
هنا قمنا بتعريف المصفوفة x من النوع int وحددنا قيم عناصرها الافتراضية.
ثم قمنا بطباعة عناصرها في تعليمة الطباعة الأولى
أما تعليمة الطباعة الثانية في تطبع نتيجة تنفيذ الأمر len والذي عند تنفيذه يرجع قيمة تحدد طول المصفوفة x
بتنفيذ هذا البرنامج نرى التالي على الشاشة :
[5 9 11 77] 4