專家推薦
Go語言作為優秀的開放原始碼程式語言,已逐漸成為雲端運算時代的必學語言之一。本書不但對基本的Go語言程式設計方法和技巧進行了深入的闡釋,還獨樹一幟地對Go語言的內部機制和原理進行清晰的描述。這些都是學好和用好Go語言的極佳資料。推薦對Go語言有興趣的技術人員閱讀本書。
杜玉傑,OpenStack 基金會董事
Go語言是服務端程式設計領域非常熱門的語言,市面上關於Go語言的書都沒有像本書這樣,把Go語言最精髓的部分--平行處理程式設計說明得如此深入淺出,明白透徹。不管你是第一次接觸Go語言,還是已經非常熟悉它了,想了解Go語言更多的技術內幕,這本書都值得仔細研讀,相信讀者能夠從中受益匪淺。
郭理靖,京東雲端平台開放雲事業部總監
適用:對Go語言有興趣的技術人員或學習者。
推薦序
我很幸運,在三年前就開始接觸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 語言的設計思想。
最後,感謝郝林邀請我寫推薦序,能夠為本書撰寫序,是我莫大的榮幸。
謝孟軍
我很幸運,在三年前就開始接觸Go 語言。由於那時候資料匱乏,我基本上是透過讀取官方的原始程式套件學習過來的。那個時候官方有一個三天入門系列,基本上花幾個小時就可以完成Go 語言的入門,後面就是靠自己在Go 原始程式套件中不斷地深入學習。由於我之前是Web 開發者,所以我就從本職工作出發寫了《比C 還簡、捷:使用Go Web 快建網頁》一書。它主要介紹了Go 語言如何與Web 開發結合起來,只花了很小的篇幅去介紹Go 語言本身。在之後的這段時間裡,我自己也在不斷思考,是不是需要再寫一本實戰類的圖書介紹Go 語言。讓我很驚訝和興奮的是...
目錄
前言
PART 1 Go 語言的世界
Chapter 01 初識Go 語言
1.1 Go 語言特性一瞥
1.2 Go 語言的優劣
1.3 怎樣學習Go 語言
1.4 本章小結
Chapter 02 Go 語言環境架設
2.1 安裝和設定
2.2 專案結構
2.3 標準指令概述
2.4 本章小結
PART 2 基礎程式設計
Chapter 03 語法與資料類型
3.1 基本語法
3.2 資料類型
3.3 資料的使用
3.4 本章小結
Chapter 04 流程控制方法
4.1 基本流程控制
4.2 defer 敘述
4.3 例外處理
4.4 實戰演練:Set
4.5 實戰演練:Ordered Map
4.6 本章小結
Chapter 05 程式測試和文件
5.1 程式測試
5.2 程式文件
5.3 本章小結
PART 3 平行處理程式設計
Chapter 06 平行處理程式設計整體說明
6.1 平行處理程式設計基礎
6.2 多處理程序程式設計
6.3 多執行緒程式設計
6.4 多執行緒與多處理程序
6.5 多核心時代的平行處理程式設計
6.6 Go 語言的平行處理程式設計
6.7 本章小結
Chapter 07 Goroutine 和Channel
7.1 Goroutine 的使用
7.2 Channel
7.3 實戰演練:酬載產生器
7.4 本章小結
Chapter 08 同步
8.1 鎖的使用
8.2 條件變數
8.3 最小操作
8.4 只會執行一次
8.5 WaitGroup
8.6 臨時物件集區
8.7 實戰演練:Concurrent Map
8.8 本章小結
PART 4 範例實現
Chapter 09 一個網路爬蟲架構的設計和實現
9.1 網路爬蟲與架構
9.2 功能需求和分析
9.3 整體設計
9.4 詳細設計
9.5 中介軟體的實現
9.6 處理模組的實現
9.7 排程器的實現
9.8 一個使用示範
9.9 目前的不足和解決想法
9.10 本章小結
Appendix A Go 語言的學習資源
A-1 知名的Go 語言開放原始碼架構
A-2 中文的Go 語言社區
前言
PART 1 Go 語言的世界
Chapter 01 初識Go 語言
1.1 Go 語言特性一瞥
1.2 Go 語言的優劣
1.3 怎樣學習Go 語言
1.4 本章小結
Chapter 02 Go 語言環境架設
2.1 安裝和設定
2.2 專案結構
2.3 標準指令概述
2.4 本章小結
PART 2 基礎程式設計
Chapter 03 語法與資料類型
3.1 基本語法
3.2 資料類型
3.3 資料的使用
3.4 本章小結
Chapter 04 流程控制方法
4.1 基本流程控制
4.2 defer 敘述
4.3 例外處理
4.4 實戰演練:Set
4.5 實戰演練:Ordered Map
4.6 本章小結
Chapter 05 程式測試和文件
5.1 程式測試
...