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

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

Susan Sarandon
发布: 2024-12-26 05:50:32
原创
481 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板