English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
قطعةهي سلسلة طول متغير تستخدم لتخزين عناصر من نفس النوع، وليس مسموحًا بتخزين أنواع مختلفة في نفس القطعة. مثل التي تحتوي على معرفات فهرس و طول.مصفوفةمثل، ولكن حجم القطعة يمكن تعديله، فهي ليست مثل المصفوفات التي تكون حجمها ثابتًا. في لغة Go، يمكنك تمرير القطعة إلىدالة، مما يعني أن الدالة تحصل على نسخة من القطعة.
قطعة ستتم تمريرها كقيمة مع حجم القطعة و طولها إلى الدالة، وستظل إشارة القطعة تشير دائمًا إلى المصفوفة الأساسية. لذا، إذا قمنا ببعض التغييرات في القطعة التي تم تمريرها كقيمة إلى الدالة، فإن التغييرات ستظهر أيضًا في القطعة الموجودة خارج الدالة. دعونا نستخدم المثال لمناقشة هذه الفكرة:
//تم تمرير القطعة إلى الدالة package main import "fmt" //الدالة التي تحتوي على القطعة //بمشاركة القيمة func myfun(element []string) { //تعديل القطعة المحددة element[2] = "Java" fmt.Println("تعديل القطع: ", element) {} func main() { //إنشاء القطع slc := []string{"C#", "Python", "C", "Perl"} fmt.Println("قطع البداية: ", slc) //تقديم القطع إلى الدالة myfun(slc) fmt.Println("آخر قطع:", slc) {}
الناتج:
قطع البداية: [C# Python C Perl] تعديل القطع: [C# Python Java Perl] آخر قطع: [C# Python Java Perl]
شرح الاستخدام:في المثال أعلاه، لدينا قطعة تدعى slc. هذه القطعة يتم تمريرها من خلال دالة myfun(). كما نعلم، دائمًا ما تشير إشارات القطعة إلى نفس الإشارة، حتى لو تم تمريرها في الدالة. لذلك، عندما نغير القيمة C، التي تُعرف بـ 2، إلى Java، يتم التغيير أيضًا في القطعة الخارجية، لذا يكون القطعة النهائية هي [c# Python Java perl].
//تقديم القطع إلى الدالة package main import "fmt" //بمشاركة القيمة func myfun(element []string) { //في هذا المكان نتعديل القطع فقط //استخدام دالة append //في هذا المكان، تتعديل الدالة فقط //مكتبة القطع الموجودة فيها //هذه الدالة لا تعديل القطع الأصلي element = append(element, "Java") fmt.Println("تعديل القطع: ", element) {} func main() { //إنشاء القطع slc := []string{"C#", "Python", "C", "Perl"} fmt.Println("قطع البداية: ", slc) //تقديم القطع //إلى الدالة myfun(slc) fmt.Println("آخر قطع: ", slc) {}
الناتج:
قطع البداية: [C# Python C Perl] تعديل القطع: [C# Python C Perl Java] آخر قطع: [C# Python C Perl]