ZBLOG

golang 动态获取当前调用函数名称

在Go语言中,无法直接动态获取当前调用函数的名称。Go语言在编译时会将函数名转换为符号,并且不提供内置的反射方法来获取函数名称。

但是,你可以使用runtime包中的Caller方法来获取当前调用函数的调用栈信息。这样你可以得到当前函数所在的文件名、行号等信息。

下面是一个示例代码:

package main

import (
	"fmt"
	"runtime"
)

func getCurrentFunctionName() string {
	pc, _, _, _ := runtime.Caller(1)
	return runtime.FuncForPC(pc).Name()
}

func foo() {
	fmt.Println("Current function name:", getCurrentFunctionName())
}

func main() {
	foo()
}

运行上述代码会输出:

Current function name: main.foo

请注意,这里通过runtime.Caller(1)将要获取调用栈的深度设置为1,以获取上一级函数(即当前调用者)的信息。如果想要获取更上层函数的名称,可以相应地增加深度值。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=14603

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?