AzLearn

الدوال

Functions

مفهوم ~20 دقيقة

الدوال — Functions

الدوال هي اللبنة الأساسية لتنظيم الكود في Go. كل برنامج Go يبدأ بدالة main، لكنك ستكتب عشرات الدوال في أي مشروع حقيقي.

تعريف دالة بسيطة

func greet() {
    fmt.Println("مرحباً!")
}

دالة مع معاملات (Parameters)

func greet(name string) {
    fmt.Println("مرحباً يا", name)
}

إذا كانت المعاملات من نفس النوع، يمكنك اختصار الكتابة:

func add(a, b int) int {    // a و b كلاهما int
    return a + b
}

دالة مع قيمة مُرجعة (Return Value)

main.go

الإرجاع المتعدد (Multiple Returns)

هذه من أقوى ميزات Go — الدالة يمكنها إرجاع عدة قيم. يُستخدم كثيراً لإرجاع نتيجة + خطأ:

main.go

ملاحظة: _ (underscore) تُستخدم لتجاهل قيمة مُرجعة لا تحتاجها. Go لا يسمح بمتغيرات غير مستخدمة!

الإرجاع المُسمّى (Named Returns)

يمكنك تسمية القيم المُرجعة — وعند ذلك return بدون قيم يُرجع القيم الحالية:

main.go

الدوال كقيم (Functions as Values)

في Go، الدوال هي قيم من الدرجة الأولى — يمكنك تخزينها في متغيرات وتمريرها كمعاملات:

main.go

الدوال المتغيرة (Variadic Functions)

دوال تقبل عدداً غير محدد من المعاملات باستخدام ...:

main.go

defer — التأجيل

defer يؤجل تنفيذ دالة حتى انتهاء الدالة الحالية. يُستخدم كثيراً لإغلاق الملفات واتصالات قواعد البيانات:

main.go
تحدي — Challenge