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的键值对特性
现在的我能感觉到,这其实是一种设计模式
延申思考一下,或许继承的使用方式本身就应该是作为某种设计模式的组成部分,并适合作为所谓“某种语言”或“面向对象”的三大特性之一