是否可以包含我当前所在函数的名称?我想将其包含在调试日志中,而不是对功能名称进行硬编码,这在一段时间后会很麻烦。
谢谢。
答案 0 :(得分:3)
您可以使用runtime.Callers
package main
import (
"fmt"
"runtime"
)
func printFuncName() {
fpcs := make([]uintptr, 1)
// Skip 2 levels to get the caller
n := runtime.Callers(2, fpcs)
if n == 0 {
fmt.Println("MSG: NO CALLER")
}
caller := runtime.FuncForPC(fpcs[0] - 1)
if caller == nil {
fmt.Println("MSG CALLER WAS NIL")
}
// Print the name of the function
fmt.Println(caller.Name())
}
func foo() {
printFuncName()
}
func main() {
foo()
}
输出(package.function)
main.foo