Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مقدمة إلى الـ OOP في Go

جزء من قسم Object Oriented Programming في رحلة GO على Coddy — الدرس 5 من 107.

لا تحتوي لغة Go على أصناف (classes)، ولكنها تحقق البرمجة كائنية التوجه من خلال structs و methods. تقوم الـ struct بتجميع البيانات ذات الصلة، وتحدد الـ methods السلوك المرتبط بتلك الـ struct.

قم بتعريف struct للاحتفاظ بالبيانات

type Dog struct {
    Name string
    Age  int
}

إرفاق تابع (method) بالهيكل (struct)

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

إنشاء مثيل واستخدامه

package main

import "fmt"

type Dog struct {
    Name string
    Age  int
}

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

func main() {
    myDog := Dog{Name: "Buddy", Age: 3}
    fmt.Println(myDog.Bark()) // المخرجات: Buddy says Woof!
    fmt.Println(myDog.Age)    // المخرجات: 3
}

في لغة Go، يُسمى الجزء (d Dog) الذي يسبق اسم الدالة (method) بـ مستقبل (receiver). فهو يربط الدالة بـ Dog struct، بشكل مشابه لكيفية انتماء الدوال (methods) للأصناف (classes) في اللغات الأخرى.

challenge icon

التحدي

سهل

أنشئ هيكل Cat مع طريقة لممارسة نهج Go في البرمجة كائنية التوجه (OOP):

  • عرّف هيكل Cat مع حقول Name (string) و Age (int)
  • أضف طريقة Speak التي تُرجع اسم القطة متبوعاً بـ " says Meow!"

ورقة مرجعية

تحقق لغة Go البرمجة كائنية التوجه (object-oriented programming) من خلال structs و methods. حيث تقوم الـ struct بتجميع البيانات ذات الصلة، بينما تحدد الـ methods السلوك المرتبط بتلك الـ struct.

قم بتعريف struct للاحتفاظ بالبيانات:

type Dog struct {
    Name string
    Age  int
}

قم بربط method بالـ struct باستخدام receiver:

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

الجزء (d Dog) قبل اسم الـ method هو الـ receiver، والذي يربط الـ method بالـ struct.

قم بإنشاء مثيل (instance) واستخدامه:

myDog := Dog{Name: "Buddy", Age: 3}
fmt.Println(myDog.Bark()) // Output: Buddy says Woof!
fmt.Println(myDog.Age)    // Output: 3

جرّب بنفسك

package main

import "fmt"

func main() {
    var name string
    var age int
    fmt.Scan(&name, &age)

    cat := Cat{Name: name, Age: age}

    fmt.Printf("Name: %s\n", cat.Name)
    fmt.Printf("Age: %d\n", cat.Age)
    fmt.Println(cat.Speak())
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming