Avatar ·

بناء جملة Go الغريب: ماذا تعني الأقواس قبل اسم الدالة؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم Go بعد Python وJavaScript، ويحيرني أحد جوانب بناء الجملة. في الكود، أرى غالبًا شيئًا كهذا: ```go type Rectangle struct { Width float64 Height float64 } func (r Rectangle) Area() float64 { return r.Width * r.Height } ``` لماذا توجد أقواس مع `(r Rectangle)` قبل اسم الدالة `Area`؟ في Python، كنت سأكتب ببساطة `def area(self):`. أفهم أن هذا له علاقة بطُرق الهياكل (struct methods)، لكني لا أستطيع فهم المنطق. إليك مثال آخر حيرني: ```go func (p *Person) SetName(name string) { p.Name = name } ``` لماذا نكتب أحيانًا `(p *Person)` وأحيانًا `(p Person)`؟ وماذا سيحدث إذا أزلت هذه الأقواس تمامًا؟ على سبيل المثال: ```go func Area() float64 { return 0 } ``` هذا أيضًا يعمل. متى يجب استخدام هذا البناء، ومتى لا؟ اشرح لي، من فضلك، كما لو كنت مبتدئًا. أشعر أنني فاتني مفهوم أساسي في Go. شكرًا مقدمًا على المساعدة.