注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計Go語言精進之路:從新手到高手的編程思想、方法和技巧 1

Go語言精進之路:從新手到高手的編程思想、方法和技巧 1

Go語言精進之路:從新手到高手的編程思想、方法和技巧 1

定 價:¥99.00

作 者: 白明
出版社: 機械工業(yè)出版社
叢編項:
標 簽: 暫缺

ISBN: 9787111698210 出版時間: 2021-12-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 432 字數(shù):  

內(nèi)容簡介

  Go入門容易,精進難,如何才能像Go開發(fā)團隊那樣寫出符合Go思維和語言慣例的高質(zhì)量代碼呢?本書將從編程思維和實踐技巧2個維度給出答案,幫助你在Go進階的路上事半功倍。編程思維層面只有真正領(lǐng)悟了一門語言的設(shè)計哲學和編程思維,并能將之用于實踐,才算精通了這門語言。本書從Go語言設(shè)計者的視角對Go背后的設(shè)計哲學和編程思想進行了梳理和分析,指引讀者體會那些看似隨意實則經(jīng)過深思熟慮的設(shè)計背后的秘密。實踐技巧層面實踐技巧源于對Go開發(fā)團隊和Go社區(qū)開發(fā)的高質(zhì)量代碼的閱讀、挖掘和歸納,從項目結(jié)構(gòu)、代碼風格、語法及其實現(xiàn)、接口、并發(fā)、同步、錯誤與異常處理、測試與調(diào)試、性能優(yōu)化、標準庫、第三方庫、工具鏈、Z佳實踐、工程實踐等多個方面給出了改善Go代碼質(zhì)量、寫出符合 Go 思維和慣例的代碼的有效實踐。全書的內(nèi)容覆蓋如下10個大類,共66個主題,字字珠璣,句句箴言。(1)Go語言的一切(2)項目結(jié)構(gòu)、代碼風格與標識符命名(3)聲明、類型、語句與控制結(jié)構(gòu)(4)函數(shù)與方法(5)接口(6)并發(fā)編程(7)錯誤處理(8)測試、性能剖析與調(diào)試(9)標準庫、反射與cgo(10)工具鏈與工程實踐學完這本書,你將擁有和 Go專家一樣的編程思維,寫出符合Go慣例和風格的高質(zhì)量代碼,從眾多 Go 初學者中脫穎而出,快速實現(xiàn)從Go新手到專家的轉(zhuǎn)變!

作者簡介

  白明(Tony Bai)資深Go技術(shù)專家和架構(gòu)師,有超過10年的服務(wù)端架構(gòu)設(shè)計和開發(fā)經(jīng)驗,擅長服務(wù)器后端編程。曾任東軟集團開發(fā)部技術(shù)總監(jiān)和東網(wǎng)科技高級架構(gòu)師,現(xiàn)為東軟睿馳智能網(wǎng)聯(lián)汽車業(yè)務(wù)線精通車聯(lián)網(wǎng)平臺的高級架構(gòu)師。精通Go、C、Python、Shell、Linux、Rancher、Docker、OpenStack、Kubernetes等技術(shù)棧?!镀咧芷哒Z言》譯者之一,GopherChina大會、開源中國源創(chuàng)會講師,麥思博客座培訓師,tonybai.com技術(shù)博客博主。

圖書目錄

【本書分1、2兩冊。此鏈接為第1冊,包含第1~第7部分內(nèi)容】
●部分 熟知Go語言的一切
第1條 了解Go語言的誕生與演進2
1.1 Go語言的誕生2
1.2 Go語言的早期團隊和演進歷程4
1.3 Go語言正式發(fā)布并開源4
第2條 選擇適當?shù)腉o語言版本6
2.1 Go語言的先祖6
2.2 Go語言的版本發(fā)布歷史7
2.3 Go語言的版本選擇建議11
第3條 理解Go語言的設(shè)計哲學12
3.1 追求簡單,少即是多12
3.2 偏好組合,正交解耦15
3.3 原生并發(fā),輕量高效17
3.4 面向工程,“自帶電池”21
第4條 使用Go語言原生編程思維來寫Go代碼26
4.1 語言與思維—來自大師的觀點26
4.2 現(xiàn)實中的“投影”27
4.3 Go語言原生編程思維29

●第二部分 項目結(jié)構(gòu)、代碼風格與標識符命名
第5條 使用得到公認且廣泛使用的項目結(jié)構(gòu)32
5.1 Go項目的項目結(jié)構(gòu)32
5.2 Go語言典型項目結(jié)構(gòu)35
第6條 提交前使用gofmt格式化源碼40
6.1 gofmt:Go語言在解決規(guī)?;瘑栴}上的實踐40
6.2 使用gofmt41
6.3 使用goimports43
6.4 將gofmt/goimports與IDE或編輯器工具集成44
第7條 使用Go命名慣例對標識符進行命名47
7.1 簡單且一致48
7.2 利用上下文環(huán)境,讓短的名字攜帶足夠多的信息53

●第三部分 聲明、類型、語句與
控制結(jié)構(gòu)
第8條 使用一致的變量聲明形式56
8.1 包級變量的聲明形式56
8.2 局部變量的聲明形式59
第9條 使用無類型常量簡化代碼63
9.1 Go常量溯源63
9.2 有類型常量帶來的煩惱64
9.3 無類型常量消除煩惱,簡化代碼65
第10條 使用iota實現(xiàn)枚舉常量68
第11條 盡量定義零值可用的類型73
11.1 Go類型的零值73
11.2 零值可用75
第12條 使用復(fù)合字面值作為初值構(gòu)造器78
12.1 結(jié)構(gòu)體復(fù)合字面值79
12.2 數(shù)組/切片復(fù)合字面值80
12.3 map復(fù)合字面值81
第13條 了解切片實現(xiàn)原理并高效使用83
13.1 切片究竟是什么83
13.2 切片的高級特性:動態(tài)擴容87
13.3 盡量使用cap參數(shù)創(chuàng)建切片90
第14條 了解map實現(xiàn)原理并高效使用92
14.1 什么是map92
14.2 map的基本操作93
14.3 map的內(nèi)部實現(xiàn)97
14.4 盡量使用cap參數(shù)創(chuàng)建map103
第15條 了解string實現(xiàn)原理并高效使用105
15.1 Go語言的字符串類型105
15.2 字符串的內(nèi)部表示110
15.3 字符串的高效構(gòu)造112
15.4 字符串相關(guān)的高效轉(zhuǎn)換115
第16條 理解Go語言的包導(dǎo)入120
16.1 Go程序構(gòu)建過程121
16.2 究竟是路徑名還是包名127
16.3 包名沖突問題130
第17條 理解Go語言表達式的求值順序132
17.1 包級別變量聲明語句中的表達式求值順序133
17.2 普通求值順序136
17.3 賦值語句的求值139
17.4 switch/select語句中的表達式求值140
第18條 理解Go語言代碼塊與作用域143
18.1 Go代碼塊與作用域簡介143
18.2 if條件控制語句的代碼塊145
18.3 其他控制語句的代碼塊規(guī)則簡介148
第19條 了解Go語言控制語句慣用法及使用注意事項154
19.1 使用if控制語句時應(yīng)遵循“快樂路徑”原則154
19.2 for range的避“坑”指南156
19.3 break跳到哪里去了165
19.4 盡量用case表達式列表替代fallthrough167

●第四部分 函數(shù)與方法
第20條 在init函數(shù)中檢查包級變量的初始狀態(tài)170
20.1 認識init函數(shù)170
20.2 程序初始化順序171
20.3 使用init函數(shù)檢查包級變量的初始狀態(tài)174
第21條 讓自己習慣于函數(shù)是“一等公民”179
21.1 什么是“一等公民”179
21.2 函數(shù)作為“一等公民”的特殊運用183
第22條 使用defer讓函數(shù)更簡潔、更健壯192
22.1 defer的運作機制193
22.2 defer的常見用法194
22.3 關(guān)于defer的幾個關(guān)鍵問題199
第23條 理解方法的本質(zhì)以選擇
正確的receiver類型206
23.1 方法的本質(zhì)207
23.2 選擇正確的receiver類型208
23.3 基于對Go方法本質(zhì)的理解巧解難題210
第24條 方法集合決定接口實現(xiàn)214
24.1 方法集合215
24.2 類型嵌入與方法集合216
24.3 defined類型的方法集合226
24.4 類型別名的方法集合227
第25條 了解變長參數(shù)函數(shù)的妙用230
25.1 什么是變長參數(shù)函數(shù)230
25.2 模擬函數(shù)重載233
25.3 模擬實現(xiàn)函數(shù)的可選參數(shù)與默認參數(shù)236
25.4 實現(xiàn)功能選項模式238

●第五部分 接口
第26條 了解接口類型變量的內(nèi)部表示246
26.1 nil error值 != nil247
26.2 接口類型變量的內(nèi)部表示248
26.3 輸出接口類型變量內(nèi)部表示的詳細信息254
26.4 接口類型的裝箱原理258
第27條 盡量定義小接口263
27.1 Go推薦定義小接口263
27.2 小接口的優(yōu)勢265
27.3 定義小接口可以遵循的一些點267
第28條 盡量避免使用空接口作為函數(shù)參數(shù)類型270
第29條 使用接口作為程序水平組合的連接點274
29.1 一切皆組合274
29.2 垂直組合回顧275
29.3 以接口為連接點的水平組合276
第30條 使用接口提高代碼的可測試性281
30.1 實現(xiàn)一個附加免責聲明的電子郵件發(fā)送函數(shù)282
30.2 使用接口來降低耦合283

●第六部分 并發(fā)編程
第31條 優(yōu)先考慮并發(fā)設(shè)計288
31.1 并發(fā)與并行288
31.2 Go并發(fā)設(shè)計實例290
第32條 了解goroutine的調(diào)度原理299
32.1 goroutine調(diào)度器299
32.2 goroutine調(diào)度模型與演進過程300
32.3 對goroutine調(diào)度器原理的進一步理解302
32.4 調(diào)度器狀態(tài)的查看方法305
32.5 goroutine調(diào)度實例簡要分析307
第33條 掌握Go并發(fā)模型和常見并發(fā)模式315
33.1 Go并發(fā)模型315
33.2 Go常見的并發(fā)模式317
第34條 了解channel的妙用340
34.1 無緩沖channel341
34.2 帶緩沖channel347
34.3 nil channel的妙用354
34.4 與select結(jié)合使用的一些慣用法357
第35條 了解sync包的正確用法359
35.1 sync包還是channel359
35.2 使用sync包的注意事項360
35.3 互斥鎖還是讀寫鎖362
35.4 條件變量365
35.5 使用sync.Once實現(xiàn)單例模式 368
35.6 使用sync.Pool減輕垃圾回收壓力370
第36條 使用atomic包實現(xiàn)伸縮性更好的并發(fā)讀取374
36.1 atomic包與原子操作374
36.2 對共享整型變量的無鎖讀寫375
36.3 對共享自定義類型變量的無鎖讀寫377
●第七部分 錯誤處理
第37條 了解錯誤處理的4種策略382
37.1 構(gòu)造錯誤值383
37.2 透明錯誤處理策略385
37.3 “哨兵”錯誤處理策略385
37.4 錯誤值類型檢視策略388
37.5 錯誤行為特征檢視策略390
第38條 盡量優(yōu)化反復(fù)出現(xiàn)的if err != nil392
38.1 兩種觀點393
38.2 盡量優(yōu)化395
38.3 優(yōu)化思路395
第39條 不要使用panic進行正常的錯誤處理405
39.1 Go的panic不是Java的checked exception405
39.2 panic的典型應(yīng)用408
39.3 理解panic的輸出信息412
【以上為本書第1冊內(nèi)容】
---------------------
 
【以下為第2冊內(nèi)容,請購買第2冊】
●第八部分 測試、性能剖析與調(diào)試
第40條 理解包內(nèi)測試與包外測試的差別
40.1 官方文檔的“自相矛盾”
40.2 包內(nèi)測試與包外測試
第41條 有層次地組織測試代碼
41.1 經(jīng)典模式—平鋪
41.2 xUnit家族模式
41.3 測試固件
第42條 優(yōu)先編寫表驅(qū)動的測試
42.1 Go測試代碼的一般邏輯
42.2 表驅(qū)動的測試實踐
42.3 表驅(qū)動測試的優(yōu)點
42.4 表驅(qū)動測試實踐中的注意事項
第43條 使用testdata管理測試依賴的外部數(shù)據(jù)文件
43.1 testdata目錄
43.2 golden文件慣用法
第44條 正確運用fake、stub和mock等輔助單元測試
44.1 fake:真實組件或服務(wù)的簡化實現(xiàn)版替身
44.2 stub:對返回結(jié)果有一定預(yù)設(shè)控制能力的替身
44.3 mock:專用于行為觀察和驗證的替身
第45條 使用模糊測試讓潛在bug無處遁形
45.1 模糊測試在挖掘Go代碼的潛在bug中的作用
45.2 go-fuzz的初步工作原理
45.3 go-fuzz使用方法
45.4 使用go-fuzz建立模糊測試的示例
45.5 讓模糊測試成為“一等公民”
第46條 為被測對象建立性能基準
46.1 性能基準測試在Go語言中是“一等公民”
46.2 順序執(zhí)行和并行執(zhí)行的性能基準測試
46.3 使用性能基準比較工具
46.4 排除額外干擾,讓基準測試更精確
第47條 使用pprof對程序進行性能剖析
47.1 pprof的工作原理
47.2 使用pprof進行性能剖析的實例
第48條 使用expvar輸出度量數(shù)據(jù),輔助定位性能瓶頸點
48.1 expvar包的工作原理
48.2 自定義應(yīng)用通過expvar輸出的度量數(shù)據(jù)
48.3 輸出數(shù)據(jù)的展示
第49條 使用Delve調(diào)試Go代碼
49.1 關(guān)于調(diào)試,你首先應(yīng)該知道的幾件事
49.2 Go調(diào)試工具的選擇
49.3 Delve調(diào)試基礎(chǔ)、原理與架構(gòu)
49.4 并發(fā)、Coredump文件與掛接進程調(diào)試
 
●第九部分 標準庫、反射與cgo
第50條 理解Go TCP Socket網(wǎng)絡(luò)編程模型
50.1 TCP Socket網(wǎng)絡(luò)編程模型
50.2 TCP連接的建立
50.3 Socket讀寫
50.4 Socket屬性
50.5 關(guān)閉連接
第51條 使用net/http包實現(xiàn)安全通信
51.1 HTTPS:在安全傳輸層上運行的HTTP協(xié)議
51.2 HTTPS安全傳輸層的工作機制
51.3 非對稱加密和公鑰證書
51.4 對服務(wù)端公鑰證書的校驗
51.5 對客戶端公鑰證書的校驗
第52條 掌握字符集的原理和字符 編碼方案間的轉(zhuǎn)換
52.1 字符與字符集
52.2 Unicode字符集的誕生與UTF-8編碼方案
52.3 字符編碼方案間的轉(zhuǎn)換
第53條 掌握使用time包的正確方式
53.1 時間的基礎(chǔ)操作
53.2 時間的格式化輸出
53.3 定時器的使用
第54條 不要忽略對系統(tǒng)信號的處理
54.1 為什么不能忽略對系統(tǒng)信號的處理
54.2 Go語言對系統(tǒng)信號處理的支持
54.3 使用系統(tǒng)信號實現(xiàn)程序的優(yōu)雅退出
第55條 使用crypto下的密碼學包構(gòu)建安全應(yīng)用
55.1 Go密碼學包概覽與設(shè)計原則
55.2 分組密碼算法
55.3 公鑰密碼
55.4 單向散列函數(shù)
55.5 消息認證碼
55.6 數(shù)字簽名
55.7 隨機數(shù)生成
第56條 掌握bytes包和strings包的基本操作
56.1 查找與替換
56.2 比較
56.3 分割
56.4 拼接
56.5 修剪與變換
56.6 快速對接I/O模型
第57條 理解標準庫的讀寫模型
57.1 直接讀寫字節(jié)序列
57.2 直接讀寫抽象數(shù)據(jù)類型實例
57.3 通過包裹類型讀寫數(shù)據(jù)
第58條 掌握unsafe包的安全使用模式
58.1 簡潔的unsafe包
58.2 unsafe包的典型應(yīng)用
58.3 正確理解unsafe.Pointer與uintptr
58.4 unsafe.Pointer的安全使用模式
第59條 謹慎使用reflect包提供的反射能力
59.1 Go反射的三大法則
59.2 反射世界的入口
59.3 反射世界的出口
59.4 輸出參數(shù)、interface{}類型變量及反射對象的可設(shè)置性
第60條 了解cgo的原理和使用開銷
60.1 Go調(diào)用C代碼的原理
60.2 在Go中使用C語言的類型
60.3 在Go中鏈接外部C庫
60.4 在C中使用Go函數(shù)
60.5 使用cgo的開銷
60.6 使用cgo代碼的靜態(tài)構(gòu)建
 
●第十部分 工具鏈與工程實踐
第61條 使用module管理包依賴
61.1 Go語言包管理演進回顧
61.2 Go module:Go包依賴管理的生產(chǎn)標準
61.3 Go module代理
61.4 升級module的主版本號
第62條 構(gòu)建小Go程序容器鏡像
62.1 鏡像:繼承中的創(chuàng)新
62.2 “鏡像是個筐”:初學者的認知
62.3 理性回歸:builder模式的崛起
62.4 “像賽車那樣減重”:追求小鏡像
62.5 “要有光”:對多階段構(gòu)建的支持
第63條 自定義Go包的導(dǎo)入路徑
63.1 govanityurls
63.2 使用govanityurls
第64條 熟練掌握Go常用工具
64.1 獲取與安裝
64.2 包或module檢視
64.3 構(gòu)建
64.4 運行與診斷
64.5 格式化與靜態(tài)代碼檢查
64.6 重構(gòu)
64.7 查看文檔
64.8 代碼導(dǎo)航與洞察
第65條 使用go generate驅(qū)動代碼生成“驅(qū)動器”
65.2 go generate的工作原理
65.3 go generate的應(yīng)用場景
第66條 牢記Go的常見“陷阱”
66.1 語法規(guī)范類
66.2 標準庫類
【第8-第10部分為第2冊內(nèi)容,請前往第2冊鏈接購買】

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號