English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
لغة البرمجة Golangالمجموعةمثل العديد من لغات البرمجة الأخرى. في البرنامج، في بعض الأحيان نحتاج إلى حفظ مجموعة من البيانات المناسبة، مثل قائمة تقييمات الطلاب. يتم حفظ هذا النوع من المجموعات باستخدام المجموعات في البرنامج. المجموعة هي سلسلة من الأطوال الثابتة، تستخدم لتخزين العناصر المتشابهة في الذاكرة. لا يقدم لغة البرمجة Golang أي وظيفة مدمجة لنسخ مجموعة إلى مجموعة أخرى. ولكن يمكننا إنشاء نسخة من المجموعة ببساطة عن طريق تخصيص مجموعة إلى متغير جديد.
إذا قمنا بإنشاء نسخة من المجموعة باستخدام القيمة وأجرينا بعض التغييرات في القيمة الأصلية للمجموعة، فإن ذلك لن يعكس في نسخة المجموعة. وإذا قمنا بإنشاء نسخة من المجموعة باستخدام الإشارة وأجرينا بعض التغييرات في القيمة الأصلية للمجموعة، فإن ذلك سيتم تعكسه في نسخة المجموعة. كما يظهر في المثال التالي:
النحو:
// إنشاء نسخة من هذا المجلد بشكل قيمة arr := arr1 // إنشاء نسخة من هذا المجلد بالإشارة arr := &arr1
دعونا نستخدم المثال لمناقشة هذه النقطة:
مثال 1:
// نسخ هذا المجلد بشكل قيمة package main import "fmt" func main() { // إنشاء وتحديد هذا المجلد // استخدام الت声明 القصير my_arr1 := [5]string{"Scala", "Perl", "Java", "Python", "Go"} // نسخ هذا المجلد إلى متغير جديد // هنا، يتم نقل العناصر بشكل قيمة my_arr2 := my_arr1 fmt.Println("Array_1: ", my_arr1) fmt.Println("Array_2:", my_arr2) my_arr1[0] = "C++" // هنا، عند نسخ هذا المجلد // من خلال وضع القيمة في مجلد آخر // ثم تعديل المحتوى الأصلي // لن يتم انعكاس هذا المجلد في // نسخة من هذا المجلد fmt.Println("\nArray_1: ", my_arr1) fmt.Println("Array_2: ", my_arr2) }
الناتج:
Array_1: [Scala Perl Java Python Go] Array_2: [Scala Perl Java Python Go] Array_1: [C++ Perl Java Python Go] Array_2: [Scala Perl Java Python Go]
مثال على نسخ هذا المجلد بالإشارة:
// نسخ هذا المجلد بالإشارة package main import "fmt" func main() { // إنشاء وتحديد هذا المجلد // استخدام الت声明 القصير my_arr1 := [6]int{12, 456, 67, 65, 34, 34} // نسخ هذا المجلد إلى متغير جديد // هنا، يتم نقل العناصر عن طريق الإشارة my_arr2 := &my_arr1 fmt.Println("Array_1: ", my_arr1) fmt.Println("Array_2:", *my_arr2) my_arr1[5] = 1000000 // هنا، عند نسخ هذا المجلد // من خلال وضع الإشارة في مجلد آخر // ثم تعديل المحتوى الأصلي // سيتم انعكاس هذا المجلد في // نسخة من هذا المجلد fmt.Println("\nArray_1: ", my_arr1) fmt.Println("Array_2:", *my_arr2) }
الناتج:
Array_1: [12 456 67 65 34 34] Array_2: [12 456 67 65 34 34] Array_1: [12 456 67 65 34 1000000] Array_2: [12 456 67 65 34 1000000]