我面临的问题更多是代码设计,而不是具体相关。我正在构建一个简单的CRUD应用程序,除更新部分外,一切似乎都很轻松:我有一个简单的结构类型:
type User struct {
ID string
Name string
Password string
}
和用于数据存储层的接口:
type Store interface {
...
Update(user *User) error
...
}
问题在于,对于大多数数据库驱动程序,您不能仅传递整个struct实例,并希望其系统知道哪些字段被修改,整个文档/行将被替换。我应该如何跟踪修改了哪些字段(以便可以在存储层中进行相应的更新)?也许将我要修改的所有字段作为接口{}传递给Update函数?
答案 0 :(得分:0)
有很多方法可以实现这一目标。例如,您可以使用设置器更改值,因此可以跟踪更新的字段。 像这样:
type User struct {
ID string
Name string
Password string
updateFields map[string]bool
}
func (u *User) SetName(name string) {
u.Name = name
updateFields["name"] = true
}
您可以通过反射使用更多自动化的方法。