Maison  >  Article  >  développement back-end  >  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
Mary-Kate Olsenoriginal
2024-11-09 15:45:02710parcourir

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()
}

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!

Déclaration:
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