Avatar ·

خطأ "X does not implement Y (method has a pointer receiver)" في Go

```html مرحباً بالجميع! لقد بدأت للتو في تعلم Go وواجهت خطأً لا أستطيع فهمه. لدي واجهة وهيكل، كما أعتقد، يقوم بتنفيذها. لكن المترجم يقول لا. هذا هو الكود الخاص بي: ```go package main import "fmt" type Greeter interface { Greet() string } type Person struct { Name string } func (p *Person) Greet() string { return "Hello, " + p.Name } func sayHello(g Greeter) { fmt.Println(g.Greet()) } func main() { p := Person{Name: "Alice"} sayHello(p) // خطأ: Person does not implement Greeter (method Greet has pointer receiver) } ``` الخطأ: `Person does not implement Greeter (method Greet has pointer receiver)`. أنا أفهم أن الدالة `Greet()` معرفة على المؤشر `*Person` وليس على `Person`. لكن أليس من المفترض أن يقوم Go بتحويل القيمة إلى مؤشر تلقائياً؟ في لغات أخرى هذا يعمل. كيف يمكنني تنفيذ الواجهة بشكل صحيح في هذه الحالة؟ هل يجب دائماً استخدام المؤشر؟ ```