iT邦幫忙

鐵人檔案

第 11 屆 iThome 鐵人賽
回列表
Software Development

入吾 Go 中:走訪 Go 語言內部實作 系列

說到 Go 語言,你會想到什麼呢?
簡潔?美麗?強大?無所不在?從筆者的角度來看,這些都是 Go 語言的一些形容詞而已。

「存在先於本質」,可是,Go 語言到底是什麼?這個問題可能又不免太大了。

秉持著鐵人賽的精神,我們就從 Hello World 開始吧!在接下來的 30 天當中,筆者將使用靜態的 vim-go 與動態的 gdb 追蹤工具觀察 Go 語言程式,目標是理解重要標準函式庫的實作並妥善的解說給讀者;如果能夠來得及的話,也希望能夠涵蓋到其他面向,比方說 Go compiler 之類的。

讓我們一起努力吧!

鐵人鍊成 | 共 30 篇文章 | 43 人訂閱 訂閱系列文 RSS系列文
DAY 1

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

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

2019-09-16 ‧ 由 高魁良 分享
DAY 2

第二天:進入 Hello World!

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

2019-09-17 ‧ 由 高魁良 分享
DAY 3

第三天:追蹤 os.Stdout

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

2019-09-18 ‧ 由 高魁良 分享
DAY 4

第四天:拆解 Println

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

2019-09-19 ‧ 由 高魁良 分享
DAY 5

第五天:Fprintln 後半

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

2019-09-20 ‧ 由 高魁良 分享
DAY 6

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

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

2019-09-21 ‧ 由 高魁良 分享
DAY 7

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

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

2019-09-22 ‧ 由 高魁良 分享
DAY 8

第八天:進入 schedinit

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

2019-09-23 ‧ 由 高魁良 分享
DAY 9

第九天:進入 schedinit (之二)

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

2019-09-24 ‧ 由 高魁良 分享
DAY 10

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

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

2019-09-25 ‧ 由 高魁良 分享