حسناً ، دعنا نغوص في واحدة من أكثر الميزات متعددة الاستخدامات وأساسية - شرائح. إذا كنت قادمًا من لغة أخرى ، فقد تفكر في شرائح مماثلة للمصفوفات. ونعم ، لديهم بعض أوجه التشابه ، لكن الشرائح تجلب المزيد من القوة والمرونة والسحر الخاص بالذهاب إلى الطاولة! ؟
لذا ، فإن شريحة GO هي في الواقع "نافذة" على صفيف أساسي. يمكنك تغيير حجم هذه النافذة عن طريق النمو أو تقليصها - وهي ناعمة مثل تقطيع قطعة من الكعكة. ؟
إنشاء شريحة؟
إنشاء شريحة واضح ومباشر:
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachتهيئته إلى سلسلة فارغة
مع Make ، فأنت تخبر Go لإنشاء شريحة بطول معين ولكنها مدعومة بمجموعة تديرها لك. لذلك لا داعي للقلق بشأن تفاصيل تخصيص الذاكرة. ؟
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachعندما تبدأ عناصر الإلحاق ، ستضاعف GO ضعف السعة كلما تمتلئ ، لذلك لا داعي للقلق بشأن ضرب السقف.
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachنمط
إلحاق بالشرائح: سحر GO المدمج؟ ✨
يعد إضافة عناصر إلى شريحة سهلة مثل PIE مع وظيفة إلحاق GO. يمكنك إضافة عنصر واحد أو أكثر في وقت واحد ، وسيقوم GO بالتعامل مع جميع الأشياء المقيدة والذاكرة لك.
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachهذه الميزة ذات التقييم التلقائي تجعل الشرائح مفيدة للغاية ، خاصة إذا كنت لا تعرف حجم قائمتك.
تقطيع شريحة ؟؟
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachفي الأرقام [1: 4] ، فهرس الأول (1) شامل ، والفهرس الأخير (4) حصري. ينتهي بك الأمر بالعناصر في المواضع 1 و 2 و 3 ، ولكن ليس 4.
لا يزال هذا الشريحة الفرعية يشترك في نفس الصفيف الأساسي مع الشريحة الأصلية ، لذلك ستؤثر التغييرات على واحدة على الآخر:
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachلتجنب أي تغييرات غير مقصودة ، يمكنك استخدام النسخ لإنشاء نسخة مستقلة من الشريحة:
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachتغيير السعة مع إلحاق؟
التقطيع وكفاءة الذاكرة؟
على سبيل المثال:
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachفي مثل هذه الحالات ، من الأفضل استخدام نسخة لإنشاء شريحة مستقلة حقًا تحتوي فقط على البيانات التي تحتاجها ، وتحرير بقية الذاكرة.
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachشرائح متعددة الأبعاد ؟؟
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachكل "صف" عبارة عن شريحة في حد ذاتها ، حتى تتمكن من زراعتها بشكل مستقل إذا لزم الأمر.
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachشريحة لا شيء؟
// Using a literal numbers := []int{1, 2, 3, 4, 5} // Using the make function sliceOfStrings := make([]string, 5) // a slice of 5 strings, eachعندما تقوم بإلحاق شريحة بالارتباك ، اذهب فقط تهيئتها لك تلقائيًا. إنها خدعة أنيقة أن ترفع جعبتك.
المزالق وأفضل الممارسات؟
راقب الذاكرة المشتركة: تذكر ، تشارك الشرائح الذاكرة مع الصفيف الأصلي. هذا أمر رائع للأداء ، ولكن كن حذرًا عند تقطيع أجزاء من صفيف كبير لتجنب الحفاظ على البيانات غير الضرورية في الذاكرة.
تجنب التحسين السابق لأوانه: GO تعالج الكثير من تخصيص الذاكرة وتغيير حجمها تلقائيًا باستخدام الشرائح. في كثير من الأحيان ، يمكن أن تنتهي محاولة تشغيل هذه التفاصيل إلى جعل الكود أكثر فوضى وأقل كفاءة. ثقة ميكانيكا شريحة GO للقيام بالشيء الصحيح في معظم الحالات.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3