Проблема, с которой я сталкиваюсь, связана скорее с дизайном кода, чем с конкретной проблемой. Я создаю простое приложение CRUD, и кажется, что все идет хорошо и легко, за исключением части обновления: у меня есть простой тип структуры:
type User struct {
ID string
Name string
Password string
}
и интерфейс для слоя хранения данных:
type Store interface {
...
Update(user *User) error
...
}
Проблема в том, что с большинством драйверов баз данных вы не можете просто пропустить весь экземпляр структуры и надеяться, что их система знает, какие поля были изменены, весь документ / строка заменяется. Как мне отслеживать, какие поля были изменены (чтобы я мог соответствующим образом обновить их в слое хранилища)? Может быть, передать все поля, которые я хотел бы изменить, в функцию обновления в виде карты интерфейса {}?