嵌入类型,或者嵌套类型。这是一种把已有的类型,声明在新的类型里的方式,这个对程式码重複使用非常重要。
在Go语言中,没有继承的概念,Go提倡的是重複使用程式码,组合。组合而不是继承。
https://golang.org/doc/faq#inheritance
来透过标準函数库 io,来加深印象。
可以看到 ReadWriter的接口是嵌入 Reader 和 Writer 接口而组成的新接口。
这样就不要重複定义被嵌入接口里的方法,直接通过嵌入。
type Reader interface { Read(p []byte) (n int, err error)}type Writer interface { Write(p []byte) (n int, err error)}type Closer interface { Close() error}type ReadWriter interface { Reader Writer}type ReadCloser interface { Reader Closer}type WriteCloser interface { Writer Closer}type ReadWriteCloser interface { Reader Writer Closer}
参考来源:
https://www.flysnow.org/2017/04/06/go-in-action-go-embedded-type.html
https://golang.org/pkg/io/#ReadWriteCloser