

array vs slice في Go — الفرق الجوهري وأفضل استخدام
تعرف على الفروقات الأساسية بين array و slice في لغة Go من حيث الأداء، المرونة، وطريقة الاستخدام، مع أمثلة توضيحية ونصائح عملية لاختيار الأنسب.
Published on July 27, 2025 by d7man
🧩 الفرق بين array
و slice
في Go
في لغة Go، عندك نوعين رئيسيين لتخزين القوائم: array
و slice
.
يبدون متشابهين، لكن الفرق بينهم كبير من حيث المرونة، الأداء، وطريقة الاستخدام.
📦 أولًا: array
- طول ثابت يتم تحديده وقت التعريف.
- يتم نسخه بالكامل عند تمريره للدوال.
- يعطي أداء عالي، لكنه غير مرن.
🔸 مثال
var a [3]int // يجب تحديد عدد العناصر
a[0] = 1
fmt.Println(a) // [1 0 0]
🌊 ثانيًا: slice طول ديناميكي يمكن تغييره.
مبني على array داخلي.
يُمرر كمرجع، وغالبية الشيفرات في Go تعتمد عليه.
🔹 مثال:
package main
import "fmt"
func main() {
s := []int{1, 2, 3} // لا حاجة لتحديد الطول
fmt.Println(s) // [1 2 3]
s = append(s, 4) // إضافة عنصر جديد
fmt.Println(s) // [1 2 3 4]
}
🎯 الخلاصة: array ممتاز للحالات الثابتة والأداء، بينما slice هو الخيار العملي لمعظم التطبيقات بسبب مرونته.