go 基于泛型的 FUNCTIONAL OPTIONS
Go 语言不支持重载函数,所以,如果需要对需要添加配置选项,需要提供很多的函数名.
为了避免在项目中定义很多 Option 类型的结构体,我们使用泛型
复制代码
本文字数:320 字
阅读完需:约 1 分钟
Go 语言不支持重载函数,所以,如果需要对需要添加配置选项,需要提供很多的函数名.
为了避免在项目中定义很多 Option 类型的结构体,我们使用泛型
// 一般情况下 T 应该是一个结构体type Option[T any] func(t *T)
// Apply 将 opts 应用在 t 之上func Apply[T any](t *T, opts ...Option[T]) { for _, opt := range opts { opt(t) }}
//exampletype User struct { name string age int}
func WithName(name string) Option[User] { return func(u *User) { u.name = name }}
func WithAge(age int) Option[User] { return func(u *User) { u.age = age }}
u := &User{} Apply[User](u, WithName("Tom"), WithAge(18)) fmt.Println(u)// Output:// &{Tom 18}还未添加个人签名 2020-07-09 加入
还未添加个人简介

促进软件开发及相关领域知识与创新的传播
京公网安备 11010502039052号

评论