🐹 شرح Go

البِنى والتضمين (Embedding)

مراجعة البِنية

type User struct {
  Name  string
  Email string
  Age   int
}

u := User{Name: "براء", Email: "b@mail.com", Age: 25}
u.Name

وسوم الحقول (Tags)

بيانات وصفية تُستخدم مثلًا في JSON:

type User struct {
  Name  string `json:"name"`
  Email string `json:"email"`
}

التركيب عبر التضمين

Go تفضّل التركيب على الوراثة. ضمّن بنية داخل أخرى:

type Animal struct {
  Name string
}
func (a Animal) Speak() string {
  return a.Name + " يصدر صوتًا"
}

type Dog struct {
  Animal       // تضمين
  Breed string
}

d := Dog{Animal: Animal{Name: "ريكس"}, Breed: "لابرادور"}
d.Speak()   // وصول مباشر لدالة Animal
d.Name      // وصول مباشر لحقل Animal

لماذا التركيب؟

  • يعيد استخدام السلوك دون تسلسل وراثة معقّد.
  • مرن: يمكن تضمين عدّة بِنى.

الدوال المُنشئة (اصطلاح)

Go لا تملك constructors — نستخدم دالة New:

func NewUser(name string) *User {
  return &User{Name: name, Age: 0}
}

🎯 التالي: الـ goroutines والتزامن.