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 促进了模块化和更好的功能封装。
以上是Go如何通过组合实现类似继承的行为?的详细内容。更多信息请关注PHP中文网其他相关文章!