要增强调试能力,获取当前函数的名称至关重要。与 gcc 的 FUNCTION 宏类似,Go 提供了检索此信息的机制。
考虑以下函数:
func foo() { trace() }
我们的目标是让它自动打印信息,例如“输入 foo()...”。
运行时包提供了必要的功能:
import "fmt" func trace() { pc := make([]uintptr, 10) // At least one entry required runtime.Callers(2, pc) // Get the function associated with the program counter f := runtime.FuncForPC(pc[0]) // Obtain the file name, line number, and function name file, line := f.FileLine(pc[0]) fmt.Printf("%s:%d %s\n", file, line, f.Name()) }
在此脚本中,调用者使用与调用函数关联的程序计数器填充 pc 切片。然后,我们使用 FuncForPC 检索与切片中第一个程序计数器关联的函数。最后,FileLine 提供文件名、行号和函数名,并打印到控制台。
以上是Go中如何获取当前函数的名称进行调试?的详细内容。更多信息请关注PHP中文网其他相关文章!