Hi Ian,

I'll file the bug report. Thanks for explaining how wrapper methods work. I 
have a second test case with a pointer (and a successful attempt to 
multiply a string by 2):

https://play.golang.org/p/Dq9Y8DAkvA

Thanks,

Jon

On Tuesday, June 27, 2017 at 5:01:05 PM UTC-4, Ian Lance Taylor wrote:
>
> On Tue, Jun 27, 2017 at 11:06 AM, Jon Bodner <j...@bodnerfamily.com 
> <javascript:>> wrote: 
> > 
> > I was writing up an example to demonstrate that embedded fields in a 
> > dynamically generated struct don't delegate. Except that I somehow made 
> one 
> > that did: 
> > 
> > https://play.golang.org/p/TWApy-JibG 
> > 
> > What's extra-odd is that the behavior is completely wrong; it's doubling 
> off 
> > of the wrong field. 
> > 
> > Any idea what's going on? https://github.com/golang/go/issues/15924 
> states 
> > that this shouldn't have happened. 
>
> Hmmm, that's fairly bad.  Please file a bug report at 
> https://golang.org/issue .  Thanks. 
>
> Issue 15924 is carefully worded.  reflect.StructOf does not generate 
> wrapper methods for embedded fields.  But for an embedded field which 
> is not a pointer and is the first field of the struct, you don't 
> actually need a wrapper method.  StructOf does keep those methods 
> around on the newly generated type.  But an embedded non-pointer that 
> is not the first field does require a wrapper, and it looks like not 
> only is StructOf not generating those wrappers, it is keeping the 
> original method which then winds up using the data at the wrong 
> offset.  At least, that is my first impression. 
>
> Ian 
>

-- 
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