Maison > développement back-end > Golang > Comment Go peut-il atteindre un comportement de type héritage grâce à la composition ?

Comment Go peut-il atteindre un comportement de type héritage grâce à la composition ?

Mary-Kate Olsen
Libérer: 2024-11-09 15:45:02
original
742 Les gens l'ont consulté

How Can Go Achieve Inheritance-Like Behavior Through Composition?

Héritage Go : approche alternative

Bien que Go mette l'accent sur la composition plutôt que sur l'héritage, il propose des mécanismes permettant d'obtenir des fonctionnalités similaires. Pour fournir une structure de base réutilisable avec des méthodes pouvant être étendues, une stratégie courante consiste à utiliser l'intégration.

Au lieu de s'appuyer sur les méthodes de la structure parent, les structures intégrées donnent accès à leurs propres méthodes dans le contexte de la structure englobante. . Voici comment cela fonctionne :

// Define narrow interfaces
type MyReader interface {
    Read()
}

type MyWriter interface {
    Write()
}

// Create a composite interface
type MyReadWriter interface {
    MyReader
    MyWriter
}

// Create structs implementing the interfaces
type ReaderStruct struct {}
func (r *ReaderStruct) Read() {}

type WriterStruct struct {}
func (w *WriterStruct) Write() {}

// Embed the structs into a composite struct
type ReadWriterStruct struct {
    *ReaderStruct
    *WriterStruct
}

func (rw *ReadWriterStruct) DoStuff() {
    rw.Read()
    rw.Write()
}

func main() {
    rw := &ReadWriterStruct{}
    rw.DoStuff()
}
Copier après la connexion

Dans cet exemple, ReadWriterStruct peut agir à la fois comme lecteur et comme écrivain grâce à l'intégration. En composant des structures au lieu d'en hériter, Go favorise la modularité et une meilleure encapsulation des fonctionnalités.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal