基本定义
// User 用户
type User struct {
ID int // id
Gender int // 性别
Name string // 名字
}
// NewUser 构造函数
// 利用可变参数传入属性方法
func NewUser(fs ...UserAttrFunc) *User {
user := new(User)
UserAttrFuncs(fs).apply(user)
return user
}
属性处理
// UserAttrFunc 设置用户属性
type UserAttrFunc func(*User)
// UserAttrFuncs 属性设置方法切片
type UserAttrFuncs []UserAttrFunc
func (u UserAttrFuncs) apply(user *User) {
for _, f := range u {
f(user)
}
}
// WithUserGender 设置性别
func WithUserGender(gender int) func(*User) {
return func(user *User) {
user.Gender = gender
}
}
// WithUserName 设置名字
func WithUserName(name string) func(*User) {
return func(user *User) {
user.Name=name
}
}
调用
u: = Object.NewUser(
Object.WithUserGender(1),
Object.WithUserName("jingjing"),
)
fmt.Println(u)
优点是逼格高了,缺点是代码多了