曹大带我学 Go(3)—— 如何用汇编打同事的脸

本文介绍了如何使用`go tool compile -S`和`go build && go tool objdump`查看Go代码的汇编,并通过`dlv`进行调试,深入理解Go runtime。通过实例揭示了向nil map赋值引发panic的原因,展示了调试过程。学习这些工具和技术,能提升对Go语言底层原理的理解和代码优化能力。
摘要由CSDN通过智能技术生成

你好,我是小X。

曹大最近开 Go 课程了,小X 正在和曹大学 Go。

这个系列会讲一些从课程中学到的让人醍醐灌顶的东西,拨云见日,带你重新认识 Go。

今天介绍几个常用的查看 Go 汇编代码、调试 Go 程序的命令和工具,既可以在平时和同事、网友抬杠时使用,还能在关键时刻打他们的脸。

比如,有同事说这段代码:

package main

type Student struct {
 Class int
}

func main() {
 var a = &Student{1}
 println(a)
}

的执行效率要高于下面这段代码:

package main

type Student struct {
 Class int
}

func main() {
 var a = Student{1}
 var b = &a
 println(b)
}

并且给你讲了一通道理,你好像没法辩赢他。怎么办?

直接用一行命令生成汇编代码,马上可以戳穿他,打他的脸。

go tool 生成汇编

其实很简单,有两个命令可以做到:

go tool compile -S main.go

和:

go build main.go && go tool objdump ./main
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值