golang获取调用者的方法名及所在源码行数

时间:2023-03-09 05:39:01
golang获取调用者的方法名及所在源码行数
package main

import "runtime"
import "log" func main() {
test()
} func test() {
test2()
} func test2(){
pc,file,line,ok := runtime.Caller()
log.Println(pc)
log.Println(file)
log.Println(line)
log.Println(ok)
f := runtime.FuncForPC(pc)
log.Println(f.Name()) pc,file,line,ok = runtime.Caller()
log.Println(pc)
log.Println(file)
log.Println(line)
log.Println(ok)
f = runtime.FuncForPC(pc)
log.Println(f.Name()) pc,file,line,ok = runtime.Caller()
log.Println(pc)
log.Println(file)
log.Println(line)
log.Println(ok)
f = runtime.FuncForPC(pc)
log.Println(f.Name())
}

输出

// ::
// :: /Users/jarcher/workspace/go/test/src/linetest.go
// ::
// :: true
// :: main.main
// ::
// :: /Users/jarcher/workspace/go/test/src/linetest.go
// ::
// :: true
// :: main.test2
// ::
// :: /Users/jarcher/workspace/go/test/src/linetest.go
// ::
// :: true
// :: main.test