我是靠谱客的博主 落后钢笔,最近开发中收集的这篇文章主要介绍Go的函数中得到调用者函数名,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原地址是这里,我摘抄一部份.https://colobu.com/2018/11/03/get-function-name-in-go/

"有时候在Go的函数调用的过程中,我们需要知道函数被谁调用,比如打印日志信息等。例如下面的函数,我们希望在日志中打印出调用者的名字。"

其实我可能的应用是根据调用的函数名来导向不同的逻辑.

package main
import (
	"fmt"
	"runtime"
)
func main() {
	Foo()
}
func Foo() {
	fmt.Printf("我是 %s, %s 在调用我!n", printMyName(), printCallerName())
	Bar()
}
func Bar() {
	fmt.Printf("我是 %s, %s 又在调用我!n", printMyName(), printCallerName())
}
func printMyName() string {
	pc, _, _, _ := runtime.Caller(1)
	return runtime.FuncForPC(pc).Name()
}
func printCallerName() string {
	pc, _, _, _ := runtime.Caller(2)
	return runtime.FuncForPC(pc).Name()
}

可以通过runtime.Callerruntime.Callersruntime.FuncForPC等函数更详细的跟踪函数的调用堆栈.

不过暂时用不上,所以就不转后面部份了.有兴趣的看原地址.

最后

以上就是落后钢笔为你收集整理的Go的函数中得到调用者函数名的全部内容,希望文章能够帮你解决Go的函数中得到调用者函数名所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部