HeaderImg
AvatarPic

array vs slice في Go — الفرق الجوهري وأفضل استخدام

تعرف على الفروقات الأساسية بين array و slice في لغة Go من حيث الأداء، المرونة، وطريقة الاستخدام، مع أمثلة توضيحية ونصائح عملية لاختيار الأنسب.

Published on July 27, 2025 by d7man

#:

#Array#Golang#Coding

🧩 الفرق بين 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 هو الخيار العملي لمعظم التطبيقات بسبب مرونته.

Home Posts