Go の継承: 代替アプローチ
Go は継承よりも合成を重視しますが、同様の機能を実現するメカニズムを提供します。拡張可能なメソッドを備えた再利用可能な基本構造体を提供するための一般的な戦略は、埋め込みを利用することです。
親構造体のメソッドに依存する代わりに、埋め込まれた構造体は、囲んでいる構造体のコンテキスト内で独自のメソッドへのアクセスを提供します。 。その仕組みは次のとおりです。
// 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() }
この例では、ReadWriterStruct は埋め込みにより Reader と Writer の両方として機能します。 Go は、構造体を継承するのではなく構造体を構成することにより、モジュール性と機能のカプセル化を促進します。
以上が合成を通じて継承のような動作を実現するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。