推薦序
我很幸運,在三年前就開始接觸Go 語言。由於那時候資料匱乏,我基本上是透過讀取官方的原始程式套件學習過來的。那個時候官方有一個三天入門系列,基本上花幾個小時就可以完成Go 語言的入門,後面就是靠自己在Go 原始程式套件中不斷地深入學習。由於我之前是Web 開發者,所以我就從本職工作出發寫了《比C 還簡、捷:使用Go Web 快建網頁》一書。它主要介紹了Go 語言如何與Web 開發結合起來,只花了很小的篇幅去介紹Go 語言本身。在之後的這段時間裡,我自己也在不斷思考,是不是需要再寫一本實戰類的圖書介紹Go 語言。讓我很驚訝和興奮的是,郝林趕在我之前寫出了這本《Let’s Go with Go:Go 語言帶你進入程式最高殿堂》。
本書不僅清楚地解釋了Go 語言的各個基礎知識, 而且包含了很多案例和高層次的解讀, 還闡述了很多軟體工程方面的設計和開發技巧。這本書最大的看點在於平行處理程式設計, 這也是Go 語言最大的特色。
作者花了大量篇幅詳細介紹了Go 平行處理程式設計的核心要素——
Goroutine 和Channel 的概念、原理、基本用法和進階技巧,以及撰寫平行處理程式的過程中對各種同步工具的運用等問題。在說明這些知識的過程中,作者還展示和詳細說明了各種各樣的程式實例,尤其是包含了像酬載產生器和網路爬蟲架構這樣的應用程式。這對讀者真正了解上述基礎知識是非常有幫助的。從基礎知識到進階應用,再到實戰,作者如此縝密的構思真是完美啊。這本書不僅讓你知其然,而且還讓你知其所以然。在我通讀全書之後,不禁感慨作者的闡述是如此地全面和充實。因此,這本書不僅適合新手入門Go 語言,而且讓我們這樣有幾年Go 語言程式設計經驗的讀者也受益匪淺。
這本書圍繞著平行處理程式設計做了大量的介紹,但前幾章的程式設計基礎也介紹得相當詳細。我們知道,Go 語言的語法很簡潔,關鍵字只有25 個,但是表達能力超強。作者透過5 個章節把Go 語言的語言細節介紹得非常清楚,而且還介紹了很多底層的實現細節,貫穿於語言層面和原始程式層面,進一步讓讀者對Go 語言的實現有更加深刻的了解。我們學習的過程一般都是先進行基礎知識的學習,接著開始動手寫程式。這本書就是按這樣的順序撰寫的,從知識學習到實戰應用的構思非常好,也讓我學習到了很多知識,非常感謝作者能寫出這樣的一本書來。如果在三年前就有這樣一本書的話,我相信在它的幫助下我可以更加深入地了解Go 語言,而不需要天天深埋在原始程式中,研究各種設計想法和語言細節,這樣也許我就有更多時間去寫出更多的開放原始碼專案。作為一名Go 語言程式設計師,我們需要不斷地深入學習Go 的各種細節,這樣才能使用它撰寫出正確和高效的程式。而此書對於Go 語言細節的說明非常透徹,還透過各種實例示範了其使用方法及開發技巧。這是一本深度和廣度俱佳的Go 語言的實戰圖書。我在此鄭重推薦給每一位學習Go 語言的讀者。建議讀者不僅要細讀這本書,而且還要深入了解作者列出的一些實例,這樣才能掌握Go 語言的設計思想。
最後,感謝郝林邀請我寫推薦序,能夠為本書撰寫序,是我莫大的榮幸。
謝孟軍