說到 Go 語言,你會想到什麼呢?
簡潔?美麗?強大?無所不在?從筆者的角度來看,這些都是 Go 語言的一些形容詞而已。
「存在先於本質」,可是,Go 語言到底是什麼?這個問題可能又不免太大了。
秉持著鐵人賽的精神,我們就從 Hello World 開始吧!在接下來的 30 天當中,筆者將使用靜態的 vim-go 與動態的 gdb 追蹤工具觀察 Go 語言程式,目標是理解重要標準函式庫的實作並妥善的解說給讀者;如果能夠來得及的話,也希望能夠涵蓋到其他面向,比方說 Go compiler 之類的。
讓我們一起努力吧!
開場介紹 GO 語言是由 Rob Pike 與 Ken Tompson 兩位 UNIX 作業系統開發者於 2009 九年開始發起的一項開放原始碼計畫。這些主力...
前情提要 昨日開場介紹了 GO 語言以及本系列的目標,也用最懶人的方式編好了一個實驗環境,但是那個環境在哪裡呢?作日最後的進度是: $ GOOS=Linux...
前情提要 昨日透過靜態方法(程式碼)與動態方法(gdb 除錯器)雙管齊下,多窺得一些有趣的行為。 os.Stdout 再追蹤 昨日為了驗證這個變數啟用了 g...
前情提要 昨日多深入一些,理解 os.Stdout 的生成與牽涉到的結構。 回到 fmt.Fprintln 如果讀者跟筆者一樣是從 C 語言過來的,一定也跟...
前情提要 昨日瀏覽了 fmt.Fprintln 的前半,先是看了一下 printer 代表什麼意義,中間也如往常一般遇到許多新奇又陌生的 GO 語言元件(如...
前情提要 昨日一層一層瀏覽了不同層次的抽象層,最後把寫入檔案的動作看完,整個 Hello World 程式也暫告結束。 稍事休息 過去幾天我們一步一步的看過...
前情提要 昨日宣告重啟 Hello World 程式,但是是那些我們所寫的 main 函式以外的部份。目前追蹤到作業系統與架構相依的部份結束,何時會迎來 GO...
前情提要 昨日從一支 GO 語言程式的源頭往下看,在初始化參數(runtime.args)和初始化來自作業系統的資訊(runtime.osinit)方面有個簡...
前情提要 昨日剛開始追蹤排程初始化(runtime.schedinit)函式的開頭部份,註解真的幫了大忙;大略上瀏覽過一些觀念,比方說 goroutine 的...
前情提要 昨日追蹤排程初始化(runtime.schedinit)函式內容,多閱讀了 tracebackinit 函式(與追溯 stack 機制有關的初始化,...