गो में त्रुटि "X does not implement Y (method has a pointer receiver)"
नमस्ते! मैंने गो सीखना शुरू किया है और इंटरफेस के साथ काम करते समय एक अजीब त्रुटि का सामना किया। मेरे पास एक सरल `Speaker` इंटरफेस है जिसमें `Speak()` method है, और एक `Dog` struct है जो इस method को implement करता है। लेकिन जब मैं `Dog` value को एक function में पास करने की कोशिश करता हूँ जो `Speaker` की उम्मीद करता है, compiler यह त्रुटि देता है:
```
cannot use dog (variable of type Dog) as Speaker value in argument to makeSpeak: Dog does not implement Speaker (method Speak has a pointer receiver)
```
यहाँ मेरा कोड है:
```go
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {
Name string
}
func (d *Dog) Speak() string {
return "Гав! Я " + d.Name
}
func makeSpeak(s Speaker) {
fmt.Println(s.Speak())
}
func main() {
dog := Dog{Name: "Бобик"}
makeSpeak(dog) // त्रुटि!
}
```
मैं समझता हूँ कि त्रुटि इसलिए है क्योंकि `Speak` method pointer (`*Dog`) पर define किया गया है, value (`Dog`) पर नहीं। लेकिन यह समस्या क्यों है? आखिरकार, गो में pointers स्वचालित रूप से