第十一屆 佳作

software-dev
入吾 Go 中:走訪 Go 語言內部實作
高魁良

系列文章

DAY 1

第一天:本系列方向與寫作計畫

開場介紹 GO 語言是由 Rob Pike 與 Ken Tompson 兩位 UNIX 作業系統開發者於 2009 九年開始發起的一項開放原始碼計畫。這些主力...

DAY 2

第二天:進入 Hello World!

前情提要 昨日開場介紹了 GO 語言以及本系列的目標,也用最懶人的方式編好了一個實驗環境,但是那個環境在哪裡呢?作日最後的進度是: $ GOOS=Linux...

DAY 3

第三天:追蹤 os.Stdout

前情提要 昨日透過靜態方法(程式碼)與動態方法(gdb 除錯器)雙管齊下,多窺得一些有趣的行為。 os.Stdout 再追蹤 昨日為了驗證這個變數啟用了 g...

DAY 4

第四天:拆解 Println

前情提要 昨日多深入一些,理解 os.Stdout 的生成與牽涉到的結構。 回到 fmt.Fprintln 如果讀者跟筆者一樣是從 C 語言過來的,一定也跟...

DAY 5

第五天:Fprintln 後半

前情提要 昨日瀏覽了 fmt.Fprintln 的前半,先是看了一下 printer 代表什麼意義,中間也如往常一般遇到許多新奇又陌生的 GO 語言元件(如...

DAY 6

第六天:暫停一下回顧未解問題

前情提要 昨日一層一層瀏覽了不同層次的抽象層,最後把寫入檔案的動作看完,整個 Hello World 程式也暫告結束。 稍事休息 過去幾天我們一步一步的看過...

DAY 7

第七天:瀏覽系統相依的初始化

前情提要 昨日宣告重啟 Hello World 程式,但是是那些我們所寫的 main 函式以外的部份。目前追蹤到作業系統與架構相依的部份結束,何時會迎來 GO...

DAY 8

第八天:進入 schedinit

前情提要 昨日從一支 GO 語言程式的源頭往下看,在初始化參數(runtime.args)和初始化來自作業系統的資訊(runtime.osinit)方面有個簡...

DAY 9

第九天:進入 schedinit (之二)

前情提要 昨日剛開始追蹤排程初始化(runtime.schedinit)函式的開頭部份,註解真的幫了大忙;大略上瀏覽過一些觀念,比方說 goroutine 的...

DAY 10

第十天:初遇 GO 語言密碼:G、M、P?

前情提要 昨日追蹤排程初始化(runtime.schedinit)函式內容,多閱讀了 tracebackinit 函式(與追溯 stack 機制有關的初始化,...