Avatar ·

Fehler "X does not implement Y (method has a pointer receiver)" in Go

Hallo! Ich habe angefangen, Go zu lernen und bin auf einen seltsamen Fehler bei der Arbeit mit Interfaces gestoßen. Ich habe ein einfaches Interface `Speaker` mit einer Methode `Speak()` und eine Struktur `Dog`, die diese Methode implementiert. Aber wenn ich versuche, einen `Dog`-Wert an eine Funktion zu übergeben, die `Speaker` erwartet, gibt der Compiler folgenden Fehler aus: ``` 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) ``` Hier ist mein Code: ```go package main import "fmt" type Speaker interface { Speak() string } type Dog struct { Name string } func (d *Dog) Speak() string { return "Wuff! Ich bin " + d.Name } func makeSpeak(s Speaker) { fmt.Println(s.Speak()) } func main() { dog := Dog{Name: "Bobby"} makeSpeak(dog) } ```