github.com/biogo/biogo@v1.0.4/util/calls.go (about) 1 // Copyright ©2011-2012 The bíogo Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package util 6 7 import ( 8 "runtime" 9 "strings" 10 ) 11 12 type Caller struct { 13 Package string 14 Function string 15 File string 16 Line int 17 } 18 19 func GetCaller(skip int) *Caller { 20 if pc, _, _, ok := runtime.Caller(skip + 1); ok { 21 function := runtime.FuncForPC(pc) 22 caller := strings.Split(function.Name(), ".") 23 file, line := function.FileLine(pc) 24 return &Caller{ 25 Package: strings.Join(caller[0:len(caller)-1], "."), 26 Function: caller[len(caller)-1], 27 File: file, 28 Line: line, 29 } 30 } 31 return nil 32 }