Maison > Article > développement back-end > Comment Go réalise-t-il le polymorphisme sans héritage ?
Polymorphisme en langage Go
Comme vous l'avez découvert, Go ne prend pas en charge le concept traditionnel orienté objet du polymorphisme par héritage. Cependant, il existe d'autres moyens d'obtenir des résultats similaires en utilisant les interfaces et la composition.
Interface et composition
Dans Go, les interfaces définissent des contrats qui spécifient les méthodes qu'un type doit implémenter. . La composition vous permet de créer de nouveaux types en incorporant d'autres types. En combinant interfaces et composition, vous pouvez obtenir une forme de polymorphisme.
Par exemple, considérons le code suivant :
<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>
Dans cet exemple :
Lorsque vous exécutez ce code, vous verrez le résultat suivant :
Hello, playground Print Foo Impl
Cela montre comment les interfaces et la composition peuvent être utilisées pour obtenir une forme de polymorphisme dans Go. En définissant une interface, vous pouvez garantir que les différents types partagent un ensemble commun de méthodes. En intégrant des types, vous pouvez créer de nouveaux types qui combinent les fonctionnalités de plusieurs autres types. Cela vous permet d'écrire du code qui traite différents types de manière uniforme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!