Heim > Artikel > Backend-Entwicklung > Wie erreicht Go Polymorphismus ohne Vererbung?
Polymorphismus in Go lang
Wie Sie festgestellt haben, unterstützt Go das traditionelle objektorientierte Konzept des Polymorphismus durch Vererbung nicht. Es gibt jedoch auch andere Möglichkeiten, mithilfe von Schnittstellen und Komposition ähnliche Ergebnisse zu erzielen.
Schnittstelle und Komposition
In Go definieren Schnittstellen Verträge, die die Methoden angeben, die ein Typ implementieren muss . Mit Composition können Sie neue Typen erstellen, indem Sie andere Typen einbetten. Durch die Kombination von Schnittstellen und Komposition können Sie eine Form von Polymorphismus erreichen.
Betrachten Sie beispielsweise den folgenden Code:
<code class="go">package main import "fmt" type Foo interface { printFoo() } type FooImpl struct { } type Bar struct { FooImpl } type Bar2 struct { FooImpl } func (f FooImpl) printFoo() { fmt.Println("Print Foo Impl") } func getFoo() Foo { return Bar{} } func main() { fmt.Println("Hello, playground") b := getFoo() b.printFoo() }</code>
In diesem Beispiel:
Wenn Sie diesen Code ausführen, sehen Sie die folgende Ausgabe:
Hello, playground Print Foo Impl
Dies zeigt, wie Schnittstellen und Komposition verwendet werden können, um eine Form von Polymorphismus in Go zu erreichen. Durch die Definition einer Schnittstelle können Sie sicherstellen, dass verschiedene Typen einen gemeinsamen Satz von Methoden nutzen. Durch das Einbetten von Typen können Sie neue Typen erstellen, die die Funktionen mehrerer anderer Typen kombinieren. Dadurch können Sie Code schreiben, der verschiedene Typen einheitlich behandelt.
Das obige ist der detaillierte Inhalt vonWie erreicht Go Polymorphismus ohne Vererbung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!