基本定義
// User 用戶
type User struct {
ID int // id
Gender int // 性別
Name string // 名字
}
// NewUser 構(gòu)造函數(shù)
// 利用可變參數(shù)傳入屬性方法
func NewUser(fs ...UserAttrFunc) *User {
user := new(User)
UserAttrFuncs(fs).apply(user)
return user
}
屬性處理
// UserAttrFunc 設(shè)置用戶屬性
type UserAttrFunc func(*User)
// UserAttrFuncs 屬性設(shè)置方法切片
type UserAttrFuncs []UserAttrFunc
func (u UserAttrFuncs) apply(user *User) {
for _, f := range u {
f(user)
}
}
// WithUserGender 設(shè)置性別
func WithUserGender(gender int) func(*User) {
return func(user *User) {
user.Gender = gender
}
}
// WithUserName 設(shè)置名字
func WithUserName(name string) func(*User) {
return func(user *User) {
user.Name=name
}
}
調(diào)用
u: = Object.NewUser(
Object.WithUserGender(1),
Object.WithUserName("jingjing"),
)
fmt.Println(u)
優(yōu)點(diǎn)是逼格高了猾昆,缺點(diǎn)是代碼多了