Go语言获取当前函数名称和上一层调用者函数名称
Go语言获取当前函数名称和上一层调用者函数名称
- 假设main函数调用CallTest1函数,CallTest1函数又调用Test1函数,Test1函数又调用getFunName函数,我们可以依次都获取出对应的函数名称
- 我们可以称函数getFunName为当前函数
- 然后称Test1函数为调用者函数
- 反正都能获取出来了,要第几层的函数就都可获取了
package main
import (
"fmt"
"runtime"
"strings"
)
func Test1() {
getFunName(0)
getFunName(1)
getFunName(2)
getFunName(3)
getFunName(4)
getFunName(5)
getFunName(6)
getFunName(7)
}
func CallTest1() {
Test1()
}
func main() {
CallTest1()
}
//获取第几层函数的名称
//1-当前层
//2-上一层
//3-再上一层
//4-再再上一层
func getFunName(l int) string {
pc, _, _, _ := runtime.Caller(l)
name := runtime.FuncForPC(pc).Name()
split := strings.Split(name, ".")
fmt.Printf("第%d层函数,函数名称是:%s\n", l, name)
return split[len(split)-1]
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
2020-12-02 Ubuntu 离线安装TFTP
2020-12-02 Python tkinter之Entry