Golang中的runtime.Caller理解
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理解相关推荐
- golang中的runtime
Gosched runtime.Gosched()让出cpu的时间片,让出当前协程的执行权限,调度器安排其他等待的任务运行,并在下次某个时间从该位置恢复执行 和协程 yield 作用类似 func m ...
- Golang中闭包的理解
简介 参考博客: https://www.calhoun.io/what-is-a-closure/ https://blog.cloudflare.com/a-go-gotcha-when-clos ...
- 理解Golang中的nil
参考: 有趣的面试题:Go语言中的nil比较 - 知乎 (zhihu.com) 理解Go语言的nil - 简书 (jianshu.com) Golang中的nil,没有人比我更懂nil! - 知乎 ( ...
- golang runtime.Caller 学习笔记
runtime.Caller runtime.Caller可以获取到调用时的代码文件路径.行数等信息,在打印日志时常常使用 runtime.Caller源码 // Caller reports fil ...
- golang中的信号量的实现原理
概述 我们前面讲过 操作系统的信号量,以及 golang中的Mutex原理解析,就抛出了一个问题,操作系统的信号量的管理对象是线程,而 Mutex 中使用的信号量是针对协程的,那么这就意味着golan ...
- Golang的反射reflect深入理解和示例
[TOC] Golang的反射reflect深入理解和示例 [记录于2018年2月] 编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制.也就是说,这类应用通过采用某种机 ...
- golang中,new和make的区别
在golang中,make和new都是分配内存的,但是它们之间还是有些区别的,只有理解了它们之间的不同,才能在合适的场合使用. 简单来说,new只是分配内存,不初始化内存: 而make即分配又初始化内 ...
- golang中如何比较struct,slice,map是否相等以及几种对比方法的区别
一.前言 对比两个struct或者map,slice是否相等是大家经常会有的需求,想必大家也都接触过很多对比的方式,比如==,reflect.DeepEqual(),cmp.Equal()等. 这么多 ...
- Golang中panic与recover的实现原理
今天我们讲讲golang中panic异常,以及recover对异常的捕获,由于panic.recover.defer之间非常亲密,所以今天就放在一起讲解,这里会涉及到一些defer的知识,有兴趣可以看 ...
最新文章
- 在Ubuntu 14.04 64bit上使用JBL Charge2+无线蓝牙音箱听歌指南
- 改善AI性别偏见的4种方法 | CSDN博文精选
- 基于ZooKeeper的Hadoop HA集群搭建
- Oracle“死锁”模拟
- 【任务脚本】0616吐槽tb坑爹活动,预测看好jd活动,更新汇总战绩,DIY净水器预告...
- http中的净荷 payload(有效载荷、有效负载)是什么?
- SpringBoot Test及注解详解(含Mockito)
- 【数据库的备份与还原】 .
- c语言题库325,2012年二级C语言笔试模拟325
- 使用OBS录屏神器,完美录制第二块屏幕。
- 区块链、无人驾驶、量子计算、感知智能……2050 年的技术什么样?
- 服务器物理硬盘序列号,查看硬盘物理序列号的程序源代码
- 10个免费网页统计与分析工具
- 滴答清单、为知笔记、Effie,谁才是写稿爱好者的最佳战友?
- html设计带图形的边框,css怎么设置图片的边框?
- 2020.12.10丨cufflinks 简介及使用说明
- i7 1165g7和i7 9750h 哪个好
- 2021安全范儿高校挑战赛ByteCTF线上赛部分Writeup
- DAE系统的设计-豆瓣首席架构师洪强宁
- 菜鸟关于SpringBoot配置MinIo的一些疑惑问题的记录