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.