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.