代码拉取完成,页面将自动刷新
package option
// Option 接口用于配置一个对象的属性
type Option[T, O any] interface {
Apply(target T) O
}
type (
AnyOption Option[any, any]
CustomOption[T any] Option[T, any]
ProviderOption[O any] Option[any, O]
)
// OptionFunc 使用配置函数配置一个对象的属性,此函数类型实现了 Option 接口
type Func[T, O any] func(target T) O
type AnyFunc Func[any, any]
func (f Func[T, O]) Apply(target T) O {
return f(target)
}
// Custom 与 Func 类似,但是没有返回值
type Custom[T any] func(target T)
type AnyCustom = Custom[any]
func (f Custom[T]) Apply(target T) any {
f(target)
return nil
}
type CustomFunc[T, O any] func(target T)
func (f CustomFunc[T, O]) Apply(target T) (o O) {
f(target)
return
}
// Provider 通过函数提供一个配置属性用于配置对象
type Provider[O any] func() O
type AnyProvider = Provider[any]
func (p Provider[O]) Apply(target any) O {
return p()
}
type ProviderFunc[T, O any] func() O
func (p ProviderFunc[T, O]) Apply(target any) O {
return p()
}
func Apply[T any](target T, options ...Option[T, any]) {
for _, option := range options {
option.Apply(target)
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。