装饰器模式
此开源图书由ithaiq原创,创作不易转载请注明出处
向现有的对象添加新的功能,同时不改变其结构。适用于中间件如日志记录、监控告警等
type DUser struct {
Id int
Name string
}
func GetInfo(id int) *DUser { //1
return &DUser{Id: id, Name: "thaiq"}
}
type UserInfoFunc func(id int) *DUser //和一一样
func GetInfoWithRole(fn UserInfoFunc) UserInfoFunc {
return func(id int) *DUser {
u := fn(id)
u.Name = "guest" + u.Name
return u
}
}
func main() {
fmt.Println(GetInfoWithRole(GetInfo)(12).Name)
}
最后更新于
这有帮助吗?