On Sun, Aug 14, 2016 at 11:10 AM, 'Tim Hockin' via golang-nuts
<golang-nuts@googlegroups.com> wrote:
> I was playing with a method that wants to print the file:line of the
> caller.  `runtime.Caller(1)` seems like it should do the trick, but I
> get '<autogenerated>:2'.  If I call `runtime.Caller(2)` instead it
> seems to work, but I don't know why, so I am reluctant to depend on
> that.
>
> Can anyone enlighten me?  How can I know how many frames to crawl back
> to my real caller?
>
> go1.6.1 on linux/amd64

An `autogenerated` frame means that you are calling a method that is
defined on some type T1 that is embedded in some other type T2.  The
`autogenerated` code is the little wrapper that takes a value of type
T2 and invokes the method on the embedded field of type T1.  As far as
I know you will never see autogenerated code called by autogenerated
code.  So you only need to worry about this in a method of a type that
your program will embed into some other type.  If you don't know at
run time whether the type is embedded or not, call runtime.Caller(1),
and if you see autogenerated call runtime.Caller(2).

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