得到Go程序的汇编代码的方法
有多种方式可以获得Go程序的汇编代码, 尽管输出的格式有些不同,但是都是方便阅读的汇编代码,可以帮助我们更好的了解程序的底层运行方式。
我们看下面一段代码, 它是sync.Once的实现,去掉了不必要的注释,复制出来用来研究的一段小代码:
once.go
1type Once struct {
2 m sync.Mutex
3 done uint32
4}
5func (o *Once) Do(f func()) {
6 if atomic.LoadUint32(&o.done) == 1 {
7 return
8 }
9 o.m.Lock()
10 defer o.m.Unlock()
11 if o.done == 0 {
12