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

本文通过一个简单的Go语言程序示例,演示了如何使用runtime包来获取当前函数调用栈的信息,包括程序计数器、文件名、行号等,并展示了具体的输出结果。
package main

import "runtime"
import "log"

func main() {
    test()
}

func test() {
    test2()
}

func test2(){
    pc,file,line,ok := runtime.Caller(2)
    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(0)
    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(1)
    log.Println(pc)
    log.Println(file)
    log.Println(line)
    log.Println(ok)
    f = runtime.FuncForPC(pc)
    log.Println(f.Name())
}

输出

2011/12/30 22:55:17 8216
2011/12/30 22:55:17 /Users/jarcher/workspace/go/test/src/linetest.go
2011/12/30 22:55:17 7
2011/12/30 22:55:17 true
2011/12/30 22:55:17 main.main
2011/12/30 22:55:17 9065
2011/12/30 22:55:17 /Users/jarcher/workspace/go/test/src/linetest.go
2011/12/30 22:55:17 23
2011/12/30 22:55:17 true
2011/12/30 22:55:17 main.test2
2011/12/30 22:55:17 8241
2011/12/30 22:55:17 /Users/jarcher/workspace/go/test/src/linetest.go
2011/12/30 22:55:17 11
2011/12/30 22:55:17 true
2011/12/30 22:55:17 main.test

 

转载于:https://www.cnblogs.com/wangxusummer/p/4270388.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值