[Golang]嵌入类型,组合而不是继承。

嵌入类型,或者嵌套类型。这是一种把已有的类型,声明在新的类型里的方式,这个对程序码重复使用非常重要。
在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


<<:  第三十天:完赛心得

>>:  HERE mSDK - Map Rendering

D15-(9/15)-南亚(1303)-也是存股好选择的台塑四宝

注:发文日和截图的日期不一定是同一天,所以价格计算上和当日不同,是很正常的。 声明:这一系列文章并无...

Day 30 - 结语 — 首尾呼应&致谢

最後一篇来个首尾呼应,回答在 Day 01 问大家的七个关於 UI 元件的问题! 你知道 为什麽会...

Day25:终於要进去新手村了-Javascript-函式-物件综合范例

今天我们举例的范例依然是由彭彭影片内的范例程序码加上自己所能理解的方式做个纪录以及学习。 在影片之中...

Day 28: Behavioral patterns - Visitor

目的 当一群相似结构的物件们,在执行相同方法时却有着不同实作内容,那可以将方法封装成独立物件。当需要...

day10 : 追踪服务

昨天完成了log集中收拢的机,今天就来完成Observability的最後一块拼图tracing,t...