在學一門語言的過程中,如果不看中間代碼和源碼怎麼能知曉這門語言調度器的調度過程呢?
今天我就來介紹一個用於看golang重點代碼的小工具
GOSSAFUNC=hello go build hello.go
例如這麼一個問題
首先我們在本地
創建一個hello.go
插入代碼
package main
import "fmt"
func main() {
a := new(struct{})
b := new(struct{})
println(a, b, a == b)
c := new(struct{})
d := new(struct{})
fmt.Println(c, d, c == d)
}
他的運行結果會很出乎你的意料
只能說原因和調度逃逸有關
然後在目標所在目錄敲下
GOSSAFUNC=hello go build hello.go
然後會在相應路徑出現一個 ssa.html 文件
在瀏覽器打開就可以看到它從源碼到二進制一步一步做的轉換