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]
}
posted @   南风丶轻语  阅读(1093)  评论(0编辑  收藏  举报
编辑推荐:
· 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
点击右上角即可分享
微信分享提示