20210227见到了这辈子最靠谱的继承的用法 - ziyouzy/2021blog GitHub Wiki

存在于go-logger中:

type Logger struct {
lock        sync.Mutex          //sync lock
outputs     []*outputLogger     // outputs loggers
msgChan     chan *loggerMessage // message channel
synchronous bool                // is sync
wait        sync.WaitGroup      // process wait
signalChan  chan string
}

type outputLogger struct {
Name  string
Level int
LoggerAbstract
}

type LoggerAbstract interface {
Name() string
Init(config Config) error
Write(loggerMsg *loggerMessage) error
Flush()
}

核心结构类:

type outputLogger struct {
Name  string
Level int
LoggerAbstract
}

这样一来就可以把outputLogger作为一个切片储存了,同时他还能具有map的键值对特性
现在的我能感觉到,这其实是一种设计模式

延申思考一下,或许继承的使用方式本身就应该是作为某种设计模式的组成部分,并适合作为所谓“某种语言”或“面向对象”的三大特性之一