Maison > développement back-end > Golang > le corps du texte

Comment Go réalise-t-il le polymorphisme sans héritage ?

DDD
Libérer: 2024-11-06 06:45:02
original
183 Les gens l'ont consulté

How does Go Achieve Polymorphism without Inheritance?

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>
Copier après la connexion

Dans cet exemple :

  • L'interface Foo définit une méthode printFoo.
  • FooImpl implémente l'interface Foo avec une méthode printFoo.
  • Bar intègre FooImpl et implémente donc l'interface Foo.
  • Bar2 intègre FooImpl et également implémente l'interface Foo.
  • getFoo renvoie une valeur de type Foo. Puisque Bar et Bar2 implémentent tous deux l'interface Foo, Bar2 est une valeur de retour valide pour getFoo.
  • main appelle getFoo pour obtenir une valeur Foo, puis appelle la méthode printFoo sur cette valeur.

Lorsque vous exécutez ce code, vous verrez le résultat suivant :

Hello, playground
Print Foo Impl
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!