"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > دعنا نتحدث عن الشرائح في GO: الثنائي الديناميكي للمصفوفات!

دعنا نتحدث عن الشرائح في GO: الثنائي الديناميكي للمصفوفات!

نشر في 2025-03-23
تصفح:829

لذا ، فأنت تغوص في الذهاب وتسمع عن الشرائح. "ما هي الشرائح حتى؟" قد تتساءل. ليست صفائف كافية؟ حسنًا ، دعنا نقسمها! الشرائح هي ميزة قاتلة في GO. إنهم يحبون المصفوفات ، لكنهم أكثر برودة - فهي ديناميكية ومرنة ، قادرة على النمو والتقلوب مع احتياج البرنامج الخاص بك. ولكن هناك صيد أو اثنين على طول الطريق. دعنا نفشل كل شيء ونجلب لك شريحة!

Let

شرائح: صفائف على المنشطات

في جوهرها ، الشرائح هي صفائف. ولكن على عكس المصفوفات الثابتة ، فإن الشرائح ديناميكية ؛ يمكن أن يتغير حجمها ، وهو مفيد للغاية عندما لا يمكن التنبؤ باحتياجات البيانات الخاصة بك. تخيل أنك حصلت على قائمة بالعناصر ، وأحيانًا تكون 5 عناصر ، ولكن في أوقات أخرى قد تكون 50! الشرائح تجعل ذلك لا صفقة كبيرة. انهم فقط تغيير حجم أنفسهم - كيندا مثل السحر. ✨

ولكن إليك الصفقة: في كل مرة يتغير فيها شريحة حجم ، يتم إنشاء صفيف جديد تحته ، ويتم نسخ البيانات إلى هذه المجموعة الجديدة. مريح؟ قطعاً! ولكن هناك بعض التكلفة الحسابية هنا. كل تغييرات تعني GO يجب أن تخصيص ذاكرة جديدة وخلط الأشياء حولها.

لذا ، كيف نرسل هذا الوحش؟ أدخل صنع

إليك نصيحة GO مفيدة لـ YA: إذا كنت تعلم أنك ستحتاج إلى مساحة كبيرة لشريحة ، فاستخدم وظيفة Make. مع Make ([] t ، len ، cap) ، فأنت تقول Go: "مهلا ، أعطني شريحة من هذا النوع ، بهذا الطول ، وهذا السعة." وجود سعة أولية جاهزة للذهاب يوفر لك تكلفة تغيير حجمها لاحقًا. ذكي ، أليس كذلك؟

  • على سبيل المثال:
numbers := make([]int, 0, 100)

تبدأ هذه الشريحة بسعة 100 ولكن ليس لديها عناصر فيه حتى الآن. أنت مستعد لملئه دون تغيير حجم الأشياء باستمرار. على المدى الطويل ، يمكنك توفير الأداء.

الطول مقابل السعة: الثنائي الديناميكي للشرائح

كل شريحة لها طول (LEN) وقدرة (CAP) ، وتلعب أدوارًا مختلفة:

  • لين (شريحة): هذا هو عدد العناصر الموجودة حاليًا في الشريحة.
  • CAP (شريحة): هذا هو الحد الأقصى للطول الذي يمكن أن تحمله الشريحة قبل الحاجة إلى تغيير حجمه. دعنا نقول أنك حصلت على شريحة X. إذا حاولت الوصول إلى x [n] مع n أكثر من الطول (len (x)) ، فستحصل على خطأ خارج المدى. ولكن ، لا تقلق! إذا كنت تضيف عناصر إلى شريحة وضربت قدرتها ، فابحث عن مجموعة أكبر لك تحت الغطاء. كل ما يجب عليك فعله هو الحفاظ على الترميز.

هل تحتاج إلى إضافة المزيد من العناصر؟ تلبية إلحاق

عندما تريد أن تنمو شريحة ، فإن الإلحاق هو وظيفة الانتقال. تم تصميمه لإضافة عناصر في نهاية شريحة الشريحة الخاصة بك ، وتغيير حجم الشريحة تلقائيًا إذا لزم الأمر. قل وداعا للأخطاء خارج الحدود (حسنا ، في الغالب)!

  • إليك مثال عملي:
numbers := []int{1, 2, 3}
numbers = append(numbers, 4, 5, 6)

إذا كانت الشريحة لديها سعة كافية لتناسب العناصر الجديدة ، فستستخدمها. إذا لم يكن الأمر كذلك ، يقوم Append بإنشاء مجموعة جديدة مع مساحة أكبر وتنقل بياناتك. بسيط على هذا النحو! وفقًا لـ DETAFITION GO ، إذا كانت السعة غير كافية ، فسيقوم Append "بتخصيص صفيف أساسي جديد". أنيق جدا ، أليس كذلك؟

اختتام

شرائح في GO هي صديقك - وقوي في ذلك. يتيحون لك العمل مع مجموعات من البيانات بمرونة ، كل ذلك أثناء إخفاء بعض التفاصيل الشديدة لإدارة الذاكرة. لكن تذكر: مع القوة العظيمة تأتي مسؤولية كبيرة. كل تغيير حجم يأتي مع القليل من النفقات العامة الحسابية. من خلال فهم كيفية عمل الشرائح وكيف يمكن أن تساعد صنع وإلحاق ، فأنت في طريقك إلى كتابة رمز GO فعال وأنيق.

فعالة

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/learngo/lets-talk-about-slices-go-the-dynamic-duo-of-arrays-2c1؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفها.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3