English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي لـ Golang

الجمل التحكمية في Golang

الوظائف والأساليب في Golang

المباني في Golang

القطع والarrays في Golang

السلاسل (String) في Golang

مؤشرات Golang

واجهات Golang

التعامل المتوازي في Golang

استثناءات Golang (Error)

متنوعة أخرى لـ Golang

استخدام قطعة كمعامل وظيفة بلغة Go

قطعةهي سلسلة طول متغير تستخدم لتخزين عناصر من نفس النوع، وليس مسموحًا بتخزين أنواع مختلفة في نفس القطعة. مثل التي تحتوي على معرفات فهرس و طول.مصفوفةمثل، ولكن حجم القطعة يمكن تعديله، فهي ليست مثل المصفوفات التي تكون حجمها ثابتًا. في لغة 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]