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中文網其他相關文章!