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

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

返回值:

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

file是函数所在文件名目录

line所在行号

ok 是否可以获取到信息

示例:

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

package mainimport ("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.Caller理解相关推荐

  1. golang中的runtime

    Gosched runtime.Gosched()让出cpu的时间片,让出当前协程的执行权限,调度器安排其他等待的任务运行,并在下次某个时间从该位置恢复执行 和协程 yield 作用类似 func m ...

  2. Golang中闭包的理解

    简介 参考博客: https://www.calhoun.io/what-is-a-closure/ https://blog.cloudflare.com/a-go-gotcha-when-clos ...

  3. 理解Golang中的nil

    参考: 有趣的面试题:Go语言中的nil比较 - 知乎 (zhihu.com) 理解Go语言的nil - 简书 (jianshu.com) Golang中的nil,没有人比我更懂nil! - 知乎 ( ...

  4. golang runtime.Caller 学习笔记

    runtime.Caller runtime.Caller可以获取到调用时的代码文件路径.行数等信息,在打印日志时常常使用 runtime.Caller源码 // Caller reports fil ...

  5. golang中的信号量的实现原理

    概述 我们前面讲过 操作系统的信号量,以及 golang中的Mutex原理解析,就抛出了一个问题,操作系统的信号量的管理对象是线程,而 Mutex 中使用的信号量是针对协程的,那么这就意味着golan ...

  6. Golang的反射reflect深入理解和示例

    [TOC] Golang的反射reflect深入理解和示例 [记录于2018年2月] 编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制.也就是说,这类应用通过采用某种机 ...

  7. golang中,new和make的区别

    在golang中,make和new都是分配内存的,但是它们之间还是有些区别的,只有理解了它们之间的不同,才能在合适的场合使用. 简单来说,new只是分配内存,不初始化内存: 而make即分配又初始化内 ...

  8. golang中如何比较struct,slice,map是否相等以及几种对比方法的区别

    一.前言 对比两个struct或者map,slice是否相等是大家经常会有的需求,想必大家也都接触过很多对比的方式,比如==,reflect.DeepEqual(),cmp.Equal()等. 这么多 ...

  9. Golang中panic与recover的实现原理

    今天我们讲讲golang中panic异常,以及recover对异常的捕获,由于panic.recover.defer之间非常亲密,所以今天就放在一起讲解,这里会涉及到一些defer的知识,有兴趣可以看 ...

最新文章

  1. 在Ubuntu 14.04 64bit上使用JBL Charge2+无线蓝牙音箱听歌指南
  2. 改善AI性别偏见的4种方法 | CSDN博文精选
  3. 基于ZooKeeper的Hadoop HA集群搭建
  4. Oracle“死锁”模拟
  5. 【任务脚本】0616吐槽tb坑爹活动,预测看好jd活动,更新汇总战绩,DIY净水器预告...
  6. http中的净荷 payload(有效载荷、有效负载)是什么?
  7. SpringBoot Test及注解详解(含Mockito)
  8. 【数据库的备份与还原】 .
  9. c语言题库325,2012年二级C语言笔试模拟325
  10. 使用OBS录屏神器,完美录制第二块屏幕。
  11. 区块链、无人驾驶、量子计算、感知智能……2050 年的技术什么样?
  12. 服务器物理硬盘序列号,查看硬盘物理序列号的程序源代码
  13. 10个免费网页统计与分析工具
  14. 滴答清单、为知笔记、Effie,谁才是写稿爱好者的最佳战友?
  15. html设计带图形的边框,css怎么设置图片的边框?
  16. 2020.12.10丨cufflinks 简介及使用说明
  17. i7 1165g7和i7 9750h 哪个好
  18. 2021安全范儿高校挑战赛ByteCTF线上赛部分Writeup
  19. DAE系统的设计-豆瓣首席架构师洪强宁
  20. 菜鸟关于SpringBoot配置MinIo的一些疑惑问题的记录

热门文章

  1. 【​观察】中国云计算产业的下半场 京东云正在下一盘怎样的大棋?
  2. 移动端 H5 概念术语(一)
  3. 【读书总结】《Rework》 —— 重新定义工作
  4. UE4 DataAsset 的使用
  5. 中外大都市人口密度的数据比较
  6. 【尾插法】表尾插入法构造链表 (10 分)
  7. linux wifi 8192移植 及部分wifi工具的使用
  8. 安防摄像头RTSP/Onvif协议网页无插件直播视频流媒体服务器EasyNVR之按需直播如何有效利用最大上行带宽
  9. 篮桥杯,翻硬币 (贪心)
  10. 微步在线云API-python批量检测IP脚本