Polymorphismus in Go
In der objektorientierten Programmierung ermöglicht Polymorphismus, dass eine einzelne Schnittstelle auf Objekte mehrerer Typen verweist. Go erzwingt dieses Konzept nicht strikt, bietet aber alternative Möglichkeiten, ein ähnliches Verhalten zu erreichen.
Bedenken Sie den folgenden Codeausschnitt:
type Foo struct { ... } type Bar struct { Foo ... } func getFoo() Foo { return Bar{...} }
Wie Sie bemerkt haben, löst dieser Code in Go eine aus Fehler, der darauf hinweist, dass getFoo() eine Instanz von Foo zurückgeben muss. Um ein polymorphes Verhalten zu erreichen, können Sie Schnittstellen und Komposition in Go nutzen:
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() }
In diesem aktualisierten Beispiel:
Diese Technik Bietet eine Möglichkeit, Polymorphismus in Go durch die Verwendung von Schnittstellen und Kompositionen zu erreichen, sodass eine einzige Schnittstelle für verschiedene konkrete Typen verwendet werden kann.
Das obige ist der detaillierte Inhalt vonWie implementiert Go Polymorphismus, ohne ihn zu erzwingen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!