首页 >后端开发 >Golang >Golang中如何获取调用者函数信息?

Golang中如何获取调用者函数信息?

Susan Sarandon
Susan Sarandon原创
2024-12-26 05:50:32487浏览

How Can I Get Caller Function Information in Golang?

在 Golang 中检索调用者函数信息

在 Golang 中,可以深入了解调用者函数。考虑以下代码片段:

func foo() {
    // Do something
}

func main() {
    foo()
}

问题出现了:我们如何确定 foo 是从 main 调用的?其他语言(例如 C#)使用 CallerMemberName 等属性来简化此任务。

值得庆幸的是,Golang 提供了带有 runtime.Caller 函数的解决方案。

func Caller(skip int) (pc uintptr, file string, line int, ok bool)

示例实现

示例#1:打印调用者文件名和行Number

package main

import (
    "fmt"
    "runtime"
)

func foo() {
    _, file, no, ok := runtime.Caller(1)
    if ok {
        fmt.Printf("called from %s#%d\n", file, no)
    }
}

func main() {
    foo()
}

示例#2:使用runtime.FuncForPC

package main

import (
    "fmt"
    "runtime"
)

func foo() {
    pc, _, _, ok := runtime.Caller(1)
    details := runtime.FuncForPC(pc)
    if ok & details != nil {
        fmt.Printf("called from %s\n", details.Name())
    }
}

func main() {
    foo()
}

通过使用这些示例,您可以毫不费力地深入了解Go 中的调用函数信息。

以上是Golang中如何获取调用者函数信息?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn