Go語言官方自稱,之所以開發(fā)Go 語言,是因為“近10年來開發(fā)程序之難讓我們有點沮喪”。這一定位暗示了Go語言希望取代C和Java 的地位,成為最流行的通用開發(fā)語言。
Go希望成為互聯(lián)網(wǎng)時代的C語言。多數(shù)系統(tǒng)級語言(包括Java 和C#)的根本編程哲學來源于C++ ,將C++ 的面向?qū)ο筮M一步發(fā)揚光大。但是Go語言的設計者卻有不同的看法,他們認為C++ 真的沒啥好學的,值得學習的是C語言。C語言經(jīng)久不衰的根源是它足夠簡單。因此,Go語言也要足夠簡單!。這本書從整體的寫作風格來說,會以介紹 Go 語言特性為主,示例則盡量采用作者平常的實踐,而不是一個沒有太大實際意義的語法示范樣例。
Google最近發(fā)布新型的編程語言,Go。它被設計為將現(xiàn)代編程語言的先進 性帶入到目前仍由C語言占統(tǒng)治地位的系統(tǒng)層面。然而,這一語言仍在試驗階段并在不斷演變。Go的語法傳承了與C一樣的風格。程序由函數(shù)組成,而函數(shù)體是一系列的語句序列。一段代碼塊用花括號括起來。這門語言保留有限的關鍵字。表達式使用 同樣的中綴運算符。語法上并無太多出奇之處。
本書以介紹Go語言特性為主,示例則盡量采用作者開發(fā)團隊平常的實踐,內(nèi)容涉及內(nèi)存管理(堆和棧)、錯誤處理、OOP、并發(fā)編程等關鍵話題。 這本書面向的讀者是所有打算用Go語言的開發(fā)者,主要包括目前使用C、C++、Java、C#的開發(fā)人員,甚至一些Python、PHP開發(fā)人員也可能轉為 Go 程序員。
目錄
序 為什么我們需要一門新的語言?
第1章 初識Go語言
1.1 Go語言簡史
1.2 語言特性
1.3 “Hello, world!”
1.4 編譯環(huán)境
1.5 開發(fā)工具
1.6 工程管理
1.7 問題追蹤和調(diào)試
1.8 如何尋求幫助
本章小結
第2章 順序編程
2.1 變量、常量和類型
2.1.1 變量
2.1.2 常量
2.1.3 類型
2.2 流程控制
2.2.1 條件語句
2.2.2 選擇語句
2.2.3 循環(huán)
2.2.4 跳轉語句
2.3 函數(shù)
2.3.1 函數(shù)調(diào)用
2.3.2 不定參數(shù)
2.3.3 多返回值
2.3.4 匿名函數(shù)與閉包
2.4 錯誤處理
2.4.1 error接口
2.4.2 defer
2.4.3 panic和recover
本章小結
第3章 面向?qū)ο缶幊?br />3.1 類型系統(tǒng)
3.1.1 給類型添加方法
3.1.2 值語義和引用語義
3.2 結構體
3.2.1 初始化
3.2.2 匿名組合
3.2.3 成員可訪問性
3.3 接口
3.3.1 其他語言中的接口
3.3.2 非侵入式接口
3.3.3 接口賦值
3.3.4 接口查詢
3.3.5 類型查詢
3.3.6 Any類型
本章小結
第4章 工程管理
4.1 Go命令行工具
4.2 代碼風格
4.3 工程組織
4.4 單元測試
4.5 文檔管理
4.6 工程構建
4.7 包的管理與分發(fā)
4.8 跨平臺開發(fā)
4.8.1 Go語言的跨平臺能力
4.8.2 交叉編譯
4.8.3 Android支持
本章小結
第5章 并發(fā)編程
5.1 初識Goroutine
5.1.1 基本用法
5.1.2 Goroutine通信
5.2 Channel
5.2.1 基本用法
5.2.2 關閉
5.2.3 變量的傳遞
5.2.4 單向Channel
5.2.5 超時處理
5.3 多核并行化
5.4 同步機制
5.4.1 sync包簡介
5.4.2 同步鎖
5.4.3 Once類型
本章小結
第6章 網(wǎng)絡編程
6.1 HTTP編程
6.1.1 客戶端編程
6.1.2 開發(fā)HTTP服務器
6.2 JSON
6.2.1 JSON簡介
6.2.2 編碼
6.2.3 解碼
6.2.4 未知類型的解碼
6.2.5 流式讀寫
6.3 網(wǎng)站開發(fā)
6.3.1 一個最簡單的網(wǎng)站
6.3.2 開發(fā)一個相冊網(wǎng)站
6.3.2.1 新建工程
6.3.2.2 實現(xiàn)網(wǎng)絡服務
6.3.2.3 網(wǎng)頁模板渲染
6.3.2.4 緩存
6.3.2.5 錯誤處理
6.3.2.6 防止程序崩潰
6.3.2.7 資源分離
6.3.2.8 重構
6.4 更多資源
本章小結
第7章 進階話題
7.1 Go語言中的內(nèi)存管理
7.2 反射
7.3 語言交互性CGO
7.4 鏈接符號
7.5 Goroutine實現(xiàn)機制
7.6 接口的奧秘
本章小結
第8章 開發(fā)工具
8.1 Go語言開發(fā)工具
8.2 gEdit
8.3 Goclipse - 使用Eclipse開發(fā)和調(diào)試Go程序
8.4 VIM
8.5 Nodepad++,Windows上的Go開發(fā)環(huán)境搭建
8.6 GolangIDE
本章小結
附錄 Go語言包參考