Well I will only get the fields that have to be updated, not the entire
object. Therefore I need to get the old object from the database, see what
has changed, then insert it back.

On Aug 2, 2016 18:35, "roger peppe" <rogpe...@gmail.com> wrote:

> On 2 August 2016 at 09:58, Rayland <guianul...@gmail.com> wrote:
> > I am working in the context of an ODM.
> >
> > I have an update method, like this:
> >
> > func Update(key string, valuePtr interface{}) error
> >
> >
> > Inside of this method I need to do a Get in order to get the old value,
> > compare the modified fields and update them, then insert the new object
> in
> > the database.
> >
> > The problem is that inside the Update method I don't know what type
> valuePtr
> > is in order to make a second object and feed to the Get method, and then
> if
> > I call the Get method with an interface{} object it will crash because it
> > can't Unmarshal (objects are kept as json in the database).
>
> FWIW Axel's solution can work well and I've use similar techniques in
> places,
> but I have sympathy for Jan's reservations. Why do you need to do a Get
> before doing the Put - how can you tell which fields need to be updated?
> I can't immediately see how what you suggest would be different from
> just updating the database with the value directly.
>
>   cheers,
>     rog.
>
> >
> > On Tuesday, August 2, 2016 at 11:26:01 AM UTC+3, Dave Cheney wrote:
> >>
> >> Hypothetically, if there was a syntax in Go that did this, what would
> you
> >> do next ? In other words, what is the problem you are trying to solve
> that
> >> has lead you to needing this feature?
> >>
> >> On Tuesday, 2 August 2016 18:18:05 UTC+10, Rayland wrote:
> >>>
> >>> I basically need something like this:
> >>>
> >>> var obj = &Person{Name: "John"} // I don't know what type obj will be
> >>> everytime
> >>> var newObj interface{}
> >>>
> >>> initNewObj(obj) // now newObj is an empty object of type *Person
> >>>
> >>>
> >>>
> >>>
> >>> On Tuesday, August 2, 2016 at 10:21:01 AM UTC+3, Dave Cheney wrote:
> >>>>
> >>>> TL;DR a shallow copy is easy, but it's almost never what you want.
> >>>>
> >>>> https://play.golang.org/p/wpWN3Znop8
> >>>>
> >>>> Needing to copy an arbitrary value is usually an anti pattern as
> values
> >>>> can contain references to other values, which contain references to
> other
> >>>> values, which contain references to other values, sometimes leading
> back to
> >>>> the previous values.
> >>>>
> >>>> On Tuesday, 2 August 2016 17:13:21 UTC+10, Rayland wrote:
> >>>>>
> >>>>> Let's say I have an object A of some type. Is there a way to create a
> >>>>> new object B with the same type as A without knowing the type of A in
> >>>>> advance?
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "golang-nuts" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to golang-nuts+unsubscr...@googlegroups.com.
> > For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to