Thanks Josh. Yes, a single-method interface can do the job. I just want to know the unsafe way for curiosity. could you please explain more?
2017-11-22 22:12 GMT+08:00 Josh Humphries <jh...@bluegosling.com>: > The reflection package provides no way to do this. Even if it were > possible to do with unsafe (not even sure it is, but maybe?), it would be > brittle and tied to an undocumented representation of a function and its > captured variables. > > Instead, use a single-method interface. It's easy to create a factory > method that takes a function and adapts it to the interface. And then the > value can be used both to invoke the logic (by calling the one method of > the interface) and for inspecting its concrete type and value. > > > ---- > *Josh Humphries* > jh...@bluegosling.com > > On Wed, Nov 22, 2017 at 8:26 AM, Hoping White <baihaop...@gmail.com> > wrote: > >> Hi, all >> >> I known that method of a struct can be a function with explicit receiver, >> like this >> >> type Param struct { >> v int >> } >> >> func (this *Param) Call() { >> println(this.v) >> } >> >> p := &Param{v:10} >> t := p.Call >> t() >> >> I wonder how can I get the receiver p from function t through >> reflect. Thanks all. >> >> -- >> 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.