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]
}