我有两个结构:
type UpdateableUser struct {
FirstName string
LastName string
Email string
Tlm float64
Dob time.Time
}
type User struct {
Id string
FirstName string
LastName string
Email string
DOB time.Time
Tlm float64
created time.Time
updated time.Time
}
通过绑定器,我将请求数据绑定到updateableUser结构,因此我可能有一个updateableUser仅具有一个“真实”值,如uu此处:
uu := UpdateableUser{Lastname: "Smith"}
现在,我只想将UpdateableUser中的非“ emtpy”值设置为User。你能给我一个提示或更多吗?
答案 0 :(得分:1)
我建议将Updateable结构嵌入到较大的结构中:
DISPLAY_NAME
这允许您使用type UpdateableUser struct {
FirstName string
LastName string
Email string
Tlm float64
Dob time.Time
}
type User struct {
UpdateableUser
ID string
created time.Time
updated time.Time
}
func (u *User) UpdateFrom(src *UpdateableUser) {
if src.FirstName != "" {
u.FirstName = src.FirstName
}
if src.LastName != "" {
u.LastName = src.LastName
}
// ... And other properties. Tedious, but simple and avoids Reflection
}
作为界面,以明确显示可以更新的属性。