1 Star 0 Fork 0

sy_183/go-common

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
option.go 1.15 KB
一键复制 编辑 原始数据 按行查看 历史
sy_183 提交于 2023-07-20 13:21 +08:00 . 1. 增加了 lifecycle 泛型属性的函数
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)
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/sy_183/go-common.git
git@gitee.com:sy_183/go-common.git
sy_183
go-common
go-common
v1.0.4

搜索帮助