Go語言官方自稱,之所以開發(fā)Go 語言,是因?yàn)椤敖?0年來開發(fā)程序之難讓我們有點(diǎn)沮喪”。這一定位暗示了Go語言希望取代C和Java 的地位,成為最流行的通用開發(fā)語言。
Go希望成為互聯(lián)網(wǎng)時(shí)代的C語言。多數(shù)系統(tǒng)級語言(包括Java 和C#)的根本編程哲學(xué)來源于C++ ,將C++ 的面向?qū)ο筮M(jìn)一步發(fā)揚(yáng)光大。但是Go語言的設(shè)計(jì)者卻有不同的看法,他們認(rèn)為C++ 真的沒啥好學(xué)的,值得學(xué)習(xí)的是C語言。C語言經(jīng)久不衰的根源是它足夠簡單。因此,Go語言也要足夠簡單!。這本書從整體的寫作風(fēng)格來說,會(huì)以介紹 Go 語言特性為主,示例則盡量采用作者平常的實(shí)踐,而不是一個(gè)沒有太大實(shí)際意義的語法示范樣例。
Google最近發(fā)布新型的編程語言,Go。它被設(shè)計(jì)為將現(xiàn)代編程語言的先進(jìn) 性帶入到目前仍由C語言占統(tǒng)治地位的系統(tǒng)層面。然而,這一語言仍在試驗(yàn)階段并在不斷演變。Go的語法傳承了與C一樣的風(fēng)格。程序由函數(shù)組成,而函數(shù)體是一系列的語句序列。一段代碼塊用花括號括起來。這門語言保留有限的關(guān)鍵字。表達(dá)式使用 同樣的中綴運(yùn)算符。語法上并無太多出奇之處。
本書以介紹Go語言特性為主,示例則盡量采用作者開發(fā)團(tuán)隊(duì)平常的實(shí)踐,內(nèi)容涉及內(nèi)存管理(堆和棧)、錯(cuò)誤處理、OOP、并發(fā)編程等關(guān)鍵話題。 這本書面向的讀者是所有打算用Go語言的開發(fā)者,主要包括目前使用C、C++、Java、C#的開發(fā)人員,甚至一些Python、PHP開發(fā)人員也可能轉(zhuǎn)為 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 如何尋求幫助
本章小結(jié)
第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 跳轉(zhuǎn)語句
2.3 函數(shù)
2.3.1 函數(shù)調(diào)用
2.3.2 不定參數(shù)
2.3.3 多返回值
2.3.4 匿名函數(shù)與閉包
2.4 錯(cuò)誤處理
2.4.1 error接口
2.4.2 defer
2.4.3 panic和recover
本章小結(jié)
第3章 面向?qū)ο缶幊?br />3.1 類型系統(tǒng)
3.1.1 給類型添加方法
3.1.2 值語義和引用語義
3.2 結(jié)構(gòu)體
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類型
本章小結(jié)
第4章 工程管理
4.1 Go命令行工具
4.2 代碼風(fēng)格
4.3 工程組織
4.4 單元測試
4.5 文檔管理
4.6 工程構(gòu)建
4.7 包的管理與分發(fā)
4.8 跨平臺開發(fā)
4.8.1 Go語言的跨平臺能力
4.8.2 交叉編譯
4.8.3 Android支持
本章小結(jié)
第5章 并發(fā)編程
5.1 初識Goroutine
5.1.1 基本用法
5.1.2 Goroutine通信
5.2 Channel
5.2.1 基本用法
5.2.2 關(guān)閉
5.2.3 變量的傳遞
5.2.4 單向Channel
5.2.5 超時(shí)處理
5.3 多核并行化
5.4 同步機(jī)制
5.4.1 sync包簡介
5.4.2 同步鎖
5.4.3 Once類型
本章小結(jié)
第6章 網(wǎng)絡(luò)編程
6.1 HTTP編程
6.1.1 客戶端編程
6.1.2 開發(fā)HTTP服務(wù)器
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 一個(gè)最簡單的網(wǎng)站
6.3.2 開發(fā)一個(gè)相冊網(wǎng)站
6.3.2.1 新建工程
6.3.2.2 實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)
6.3.2.3 網(wǎng)頁模板渲染
6.3.2.4 緩存
6.3.2.5 錯(cuò)誤處理
6.3.2.6 防止程序崩潰
6.3.2.7 資源分離
6.3.2.8 重構(gòu)
6.4 更多資源
本章小結(jié)
第7章 進(jìn)階話題
7.1 Go語言中的內(nèi)存管理
7.2 反射
7.3 語言交互性CGO
7.4 鏈接符號
7.5 Goroutine實(shí)現(xiàn)機(jī)制
7.6 接口的奧秘
本章小結(jié)
第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
本章小結(jié)
附錄 Go語言包參考