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!