主页 > 知识库 > 对Golang中的runtime.Caller使用说明

对Golang中的runtime.Caller使用说明

热门标签:仙桃400电话办理 宁波语音外呼系统公司 宿迁便宜外呼系统代理商 郑州智能语音电销机器人价格 不封卡外呼系统 湛江crm外呼系统排名 重庆庆云企业400电话到哪申请 地图标注免费定制店 上海极信防封电销卡价格

如下所示:

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

参数:skip是要提升的堆栈帧数,0-当前函数,1-上一层函数,....

返回值:

pc是uintptr这个返回的是函数指针

file是函数所在文件名目录

line所在行号

ok 是否可以获取到信息

示例:

我们分别打印skip为0-3的相关信息

package main 
import (
 "fmt"
 "runtime"
)
 
func main() {
 for i := 0 ; i 4; i++ {
 test(i)
 }
}
 
func test(skip int) {
 call(skip)
}
 
func call(skip int) {
 pc,file,line,ok := runtime.Caller(skip)
 pcName := runtime.FuncForPC(pc).Name() //获取函数名
 fmt.Println(fmt.Sprintf("%v %s %d %t %s",pc,file,line,ok,pcName))
}

结果:

4887700 D:/GoProject/src /test/test5.go 19 true main.call
4887585 D:/GoProject/src/ test/test5.go 15 true main.test
4887481 D:/GoProject/src /test/test5.go 10 true main.main
4383501 C:/Go/src/runtime/proc.go 198 true runtime.main

分析结果可以看到

0-3分别上当前函数,当前函数的上一个caller,....

补充:golang打印所有的runtime调用栈

我就废话不多说了,大家还是直接看代码吧~

import "runtime"
buf := make([]byte, 1  20)
runtime.Stack(buf, true)
fmt.Printf("\n%s", buf)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:
  • golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
  • 解决Golang time.Parse和time.Format的时区问题
  • 解决golang时间字符串转time.Time的坑
  • golang的时区和神奇的time.Parse的使用方法
  • Golang中的time.Duration类型用法说明
  • golang time包做时间转换操作
  • golang xorm及time.Time自定义解决json日期格式的问题
  • golang time常用方法详解

标签:安康 青海 辽宁 物业服务 儋州 海南 西双版纳 电子产品

巨人网络通讯声明:本文标题《对Golang中的runtime.Caller使用说明》,本文关键词  对,Golang,中的,runtime.Caller,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《对Golang中的runtime.Caller使用说明》相关的同类信息!
  • 本页收集关于对Golang中的runtime.Caller使用说明的相关信息资讯供网民参考!
  • 推荐文章