Gibt es trotzdem, dass Sie die gleiche Funktion über mehrere Strukturen hinweg verwenden können, um eine Schnittstelle zu erfüllen?Wiederverwendung einer Funktion über mehrere Strukturen, um eine Schnittstelle zu erfüllen
Zum Beispiel:
package main
import "fmt"
type Animal interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Woof!"
}
type Wolf struct {}
func (w Wolf) Speak() string {
return "HOWWWWWWWWL"
}
type Beagle struct {}
func (b Beagle) Speak() string {
return "HOWWWWWWWWL"
}
type Cat struct {}
func (c Cat) Speak() string {
return "Meow"
}
func main() {
var a Animal
a = Wolf{}
fmt.Println(a.Speak())
}
Weil Wolf und Beagle genau die gleiche Funktion teilen, ist es trotzdem diese Funktion einmal zu schreiben, ist es dann zwischen den beiden Strukturen teilen, so dass sie beiden Tiere befriedigen?
Gibt es trotzdem für das Verfahren auf dem eingebetteten Typ alle Felder auf der Struktur zu verweisen, die es bettet? – sjmh
Reflexion kann verwendet werden, ich glaube. Aber es wäre sehr wichtig, jeden zu kontrollieren und jeden Anruf zu überprüfen, weil auf diese Weise die Möglichkeit der Laufzeitfehler leider erhöhen ... – Altenrion
sjmh ist es nicht möglich, eine Methode zu schreiben, die Felder in einer Struktur referenzieren kann, in der sein Empfänger eingebettet ist, als solche existiert eine Syntax nicht und es gibt keine klare Art, wie sie sich verhalten sollte, wenn sie nicht in eine solche Struktur eingebettet ist. – thomasrutter