代码拉取完成,页面将自动刷新
type Options interface {
apply(*logger)
}
func (f OptionFunc) apply(log *logger) {
f(log)
}
type OptionFunc func(log *logger)
func SetInfoStrFormat(format string) Options {
return NewOptionFunc(func(log *logger) {
log.infoStr = format
})
}
您是这样定义的,但是我看了关于grpc实现以及一些博客,您的差异是您是定义的是一个类型,而另一种方式使用的类。
以下是我实现的
type Options interface {
apply(*logger)
}
func (o OptionFunc) apply(log *logger) {
o.f(log)
}
type OptionFunc struct {
f func(log *logger)
}
func NewOptionFunc(f func(log *logger)) *OptionFunc {
return &OptionFunc{
f:f,
}
}
func SetInfoStrFormat(format string) Options {
return NewOptionFunc(func(log *logger) {
log.infoStr = format
})
}
第二种方式(利用类)可能可读性更好点,这是我的一点点小小的看法!
相关博客:https://www.cnblogs.com/smartrui/p/10324320.html