注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)深入淺出Go語(yǔ)言核心編程

深入淺出Go語(yǔ)言核心編程

深入淺出Go語(yǔ)言核心編程

定 價(jià):¥149.00

作 者: 張朝明、李奕鋒、甘海彬
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787302649106 出版時(shí)間: 2024-01-01 包裝: 平裝-膠訂
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 516 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《深入淺出Go語(yǔ)言核心編程》是一本全面而深入的Go語(yǔ)言學(xué)習(xí)手冊(cè),涵蓋了Go語(yǔ)言的諸多關(guān)鍵特性,包括語(yǔ)法結(jié)構(gòu)、內(nèi)存原理、并發(fā)、上下文機(jī)制與框架應(yīng)用等。本書(shū)共20章。第1章引導(dǎo)讀者快速搭建開(kāi)發(fā)環(huán)境,詳細(xì)介紹Go語(yǔ)言的環(huán)境配置及編譯運(yùn)行的具體細(xì)節(jié)。第2~5章詳細(xì)討論Go語(yǔ)言獨(dú)特的變量、常量、常用數(shù)據(jù)類(lèi)型和流程控制,并重點(diǎn)解析復(fù)雜類(lèi)型的底層實(shí)現(xiàn)機(jī)制。第6~8章講解Go語(yǔ)言的函數(shù)及如何實(shí)現(xiàn)面向?qū)ο缶幊蹋蛲℅o語(yǔ)言面向過(guò)程和面向?qū)ο缶幊讨g的橋梁。第9~12章探討Go語(yǔ)言的一些高級(jí)話題,包括并發(fā)、上下文、反射、泛型等。第13~15章探討Go語(yǔ)言的I/O、網(wǎng)絡(luò)編程及RPC通信等編程場(chǎng)景。第16~18章是Go語(yǔ)言的擴(kuò)展話題,涵蓋了內(nèi)存管理、正則表達(dá)式和Go語(yǔ)言的匯編。第19章和第20章重點(diǎn)探討了Go語(yǔ)言在日常開(kāi)發(fā)中的典型應(yīng)用,主要介紹HTTP框架Gin的使用,以及如何利用Go語(yǔ)言開(kāi)發(fā)一個(gè)綜合項(xiàng)目。 《深入淺出Go語(yǔ)言核心編程》內(nèi)容豐富,由淺入深,力求帶領(lǐng)讀者探究Go語(yǔ)言的本質(zhì),既適合初次接觸Go語(yǔ)言的新手,也適合有一定經(jīng)驗(yàn)的軟件開(kāi)發(fā)人員閱讀。

作者簡(jiǎn)介

  張朝明 前金山軟件技術(shù)總監(jiān),部就職于多家互聯(lián)網(wǎng)企業(yè),擁有近20年的軟件開(kāi)發(fā)和設(shè)計(jì)經(jīng)驗(yàn),尤其擅長(zhǎng)Golang、Java等編程語(yǔ)言,著有《XML開(kāi)發(fā)典型應(yīng)用:數(shù)據(jù)標(biāo)記、處理、共享與分析》 《21天學(xué)通Oracle》《Oracle入門(mén)很簡(jiǎn)單》等書(shū)。李奕鋒某頭部互聯(lián)網(wǎng)公司Go研發(fā)工程師,曾任金山游戲高級(jí)軟件工程師。擁有豐富的分布式、高并發(fā)、大規(guī)模微服務(wù)集群的開(kāi)發(fā)設(shè)計(jì)經(jīng)驗(yàn),在企業(yè)應(yīng)用、游戲社區(qū)等領(lǐng)域參與過(guò)大型Go項(xiàng)目設(shè)計(jì)開(kāi)發(fā)工作。甘海彬曾先后在魅族、西山居任職高級(jí)研發(fā)工程師,現(xiàn)于金山辦公擔(dān)任研發(fā)經(jīng)理,對(duì)開(kāi)發(fā)企業(yè)級(jí)應(yīng)用有著豐富經(jīng)驗(yàn)。擅長(zhǎng)語(yǔ)言Go、Java語(yǔ)言以及全棧開(kāi)發(fā),對(duì)分布式架構(gòu)、高并發(fā)微服務(wù)設(shè)計(jì)有深刻理解。

圖書(shū)目錄

目    錄
第1章 第一個(gè)Go程序 1
1.1  搭建開(kāi)發(fā)環(huán)境 1
1.2  一個(gè)簡(jiǎn)單的Go程序 3
1.2.1  編寫(xiě)第一個(gè)Go程序 3
1.2.2  運(yùn)行第一個(gè)Go程序 5
1.3  環(huán)境變量說(shuō)明 6
1.4  在IDE中運(yùn)行Go語(yǔ)言程序 7
1.4.1  創(chuàng)建項(xiàng)目 7
1.4.2  創(chuàng)建Go程序文件 8
1.4.3  運(yùn)行.go文件 9
1.5  Go語(yǔ)言如何實(shí)現(xiàn)跨平臺(tái) 9
1.5.1  跨平臺(tái)的準(zhǔn)備工作 9
1.5.2  執(zhí)行跨平臺(tái)編譯 10
1.6  探尋Go語(yǔ)言程序的編譯執(zhí)行過(guò)程 11
1.6.1  go build命令的選項(xiàng) 11
1.6.2  查看編譯的詳細(xì)過(guò)程 11
1.6.3  鏈接環(huán)節(jié) 13
1.7  編程范例——啟動(dòng)參數(shù)的使用 14
1.7.1  程序啟動(dòng)的入口函數(shù) 14
1.7.2  獲取啟動(dòng)參數(shù) 15
1.8  本章小結(jié) 19
第2章 變量與常量 20
2.1  變量 20
2.1.1  變量聲明 20
2.1.2  變量賦值 21
2.1.3  同時(shí)進(jìn)行變量聲明和賦值 23
2.1.4  多重賦值與“:=”操作符 24
2.1.5  沒(méi)有多余的局部變量 25
2.1.6  全局變量 25
2.1.7  全局變量與鏈接 26
2.2  常量 26
2.2.1  常量的聲明 26
2.2.2  常量塊的使用 27
2.2.3  常量可以聲明而不使用 28
2.3  iota與枚舉 28
2.3.1  iota實(shí)現(xiàn)自增 28
2.3.2  iota計(jì)數(shù)不會(huì)中斷 30
2.3.3  iota的使用場(chǎng)景 31
2.4  編程范例——iota的使用技巧 32
2.5  本章小結(jié) 34
第3章 簡(jiǎn)單數(shù)據(jù)類(lèi)型 35
3.1  整型 35
3.1.1  聲明整型變量 35
3.1.2  int和uint的設(shè)計(jì)初衷 36
3.2  浮點(diǎn)型 37
3.2.1  聲明浮點(diǎn)型變量 37
3.2.2  浮點(diǎn)型會(huì)產(chǎn)生精度損失 37
3.2.3  Go語(yǔ)言中沒(méi)有float關(guān)鍵字的原因 38
3.2.4  浮點(diǎn)型與類(lèi)型推導(dǎo) 38
3.2.5  浮點(diǎn)型的比較 39
3.3  布爾類(lèi)型 40
3.4  字符型 40
3.4.1  聲明字符型變量 41
3.4.2  轉(zhuǎn)義字符 42
3.5  字符串類(lèi)型 43
3.5.1  聲明字符串變量 43
3.5.2  字符串在磁盤(pán)中的存儲(chǔ) 43
3.5.3  字符串在內(nèi)存中的存儲(chǔ) 44
3.5.4  利用rune類(lèi)型處理文本 45
3.5.5  rune類(lèi)型與字符集的關(guān)系 46
3.6  數(shù)組類(lèi)型 46
3.6.1  聲明數(shù)組變量 47
3.6.2  利用索引來(lái)訪問(wèn)數(shù)組元素 47
3.6.3  數(shù)組大小不可變更 48
3.6.4  數(shù)組作為函數(shù)參數(shù) 48
3.7  編程范例——原義字符的使用 49
3.8  本章小結(jié) 50
第4章 復(fù)雜數(shù)據(jù)類(lèi)型 51
4.1  值類(lèi)型和指針類(lèi)型 51
4.1.1  值類(lèi)型和指針類(lèi)型的存儲(chǔ)結(jié)構(gòu) 51
4.1.2  為什么要區(qū)分值類(lèi)型和指針類(lèi)型 53
4.1.3  關(guān)于引用類(lèi)型 54
4.2  slice(切片)的使用及實(shí)現(xiàn)原理 54
4.2.1  切片如何實(shí)現(xiàn)大小可變 54
4.2.2  切片的聲明和定義 55
4.2.3  切片長(zhǎng)度的擴(kuò)展 56
4.2.4  切片容量的擴(kuò)展 57
4.2.5  切片參數(shù)的復(fù)制 58
4.2.6  利用數(shù)組創(chuàng)建切片 60
4.2.7  利用切片創(chuàng)建切片 62
4.2.8  切片元素的修改 62
4.2.9  切片的循環(huán)處理 63
4.2.10  切片索引越界 63
4.2.11  總結(jié)切片操作的底層原理 64
4.3  map(映射)的使用及實(shí)現(xiàn)原理 65
4.3.1  聲明和創(chuàng)建map 65
4.3.2  遍歷map中的元素 65
4.3.3  元素查找與避免二義性 66
4.3.4  刪除元素 67
4.3.5  map的存儲(chǔ)結(jié)構(gòu)解析 68
4.3.6  map元素的定位原理解析 70
4.3.7  map的容量擴(kuò)展原理解析 72
4.4  channel(通道)的使用及實(shí)現(xiàn)原理 72
4.4.1  channel的使用 72
4.4.2  channel的實(shí)現(xiàn)原理 74
4.4.3  channel與消息隊(duì)列、協(xié)程通信的對(duì)比 76
4.5  自定義結(jié)構(gòu)體 76
4.5.1  自定義數(shù)據(jù)類(lèi)型和自定義結(jié)構(gòu)體 76
4.5.2  自定義結(jié)構(gòu)體的使用 77
4.5.3  利用new創(chuàng)建實(shí)例 78
4.5.4  從自定義結(jié)構(gòu)體看訪問(wèn)權(quán)限控制 79
4.5.5  自描述的訪問(wèn)權(quán)限 80
4.6  編程范例——結(jié)構(gòu)體使用實(shí)例 80
4.6.1  利用自定義結(jié)構(gòu)體實(shí)現(xiàn)bitmap 80
4.6.2  利用timer.Ticker實(shí)現(xiàn)定時(shí)任務(wù) 84
4.7  本章小結(jié) 87
第5章 流程控制 88
5.1  分支控制 88
5.1.1  if語(yǔ)句實(shí)現(xiàn)分支控制 88
5.1.2  switch語(yǔ)句實(shí)現(xiàn)分支控制 89
5.1.3  分支控制的本質(zhì)是向下跳轉(zhuǎn) 90
5.1.4  避免多層if嵌套的技巧 91
5.2  循環(huán)控制 94
5.2.1  for循環(huán) 94
5.2.2  for-range循環(huán) 95
5.2.3  循環(huán)控制的本質(zhì)是向上跳轉(zhuǎn) 97
5.2.4  循環(huán)和遞歸的區(qū)別 98
5.3  跳轉(zhuǎn)控制 99
5.3.1  goto關(guān)鍵字的使用 99
5.3.2  goto的本質(zhì)是任意跳轉(zhuǎn) 101
5.4  編程范例——流程控制的靈活使用 101
5.4.1  for循環(huán)的誤區(qū) 101
5.4.2  switch-case的靈活使用 104
5.5  本章小結(jié) 106
第6章 函數(shù) 107
6.1  函數(shù)在Go語(yǔ)言中的地位 107
6.1.1  Go語(yǔ)言中函數(shù)和方法的區(qū)別 108
6.1.2  重新理解變量聲明中數(shù)據(jù)類(lèi)型出現(xiàn)的位置 109
6.2  函數(shù)的定義 110
6.2.1  函數(shù)的參數(shù) 110
6.2.2  函數(shù)的返回值 111
6.2.3  函數(shù)多返回值的實(shí)現(xiàn)原理 113
6.3  函數(shù)的管理——模塊和包 115
6.3.1  函數(shù)管理形式 115
6.3.2  模塊與文件夾 116
6.3.3  本地包管理 119
6.3.4  模塊名與文件夾名稱(chēng) 121
6.3.5  代碼規(guī)范的意義 123
6.4  函數(shù)的調(diào)用和執(zhí)行 123
6.4.1  包的別名與函數(shù)調(diào)用 123
6.4.2  init()函數(shù)與隱式執(zhí)行順序 125
6.4.3  利用init()函數(shù)執(zhí)行初始化 126
6.4.4  利用匿名包實(shí)現(xiàn)函數(shù)導(dǎo)入 127
6.5  將函數(shù)作為變量使用 128
6.5.1  將函數(shù)賦值給變量 128
6.5.2  函數(shù)賦值給變量的應(yīng)用場(chǎng)景 129
6.6  匿名函數(shù)和閉包 132
6.6.1  為什么需要匿名函數(shù) 132
6.6.2  閉包 134
6.7  函數(shù)的強(qiáng)制轉(zhuǎn)換 137
6.7.1  從數(shù)據(jù)類(lèi)型的定義到函數(shù)類(lèi)型的定義 137
6.7.2  從數(shù)據(jù)類(lèi)型的強(qiáng)制轉(zhuǎn)換到函數(shù)類(lèi)型的強(qiáng)制轉(zhuǎn)換 138
6.7.3  函數(shù)類(lèi)型及強(qiáng)制轉(zhuǎn)換的意義 138
6.7.4  利用強(qiáng)制轉(zhuǎn)換為函數(shù)綁定方法 140
6.8  編程范例——閉包的使用 142
6.8.1  閉包封裝變量的真正含義 142
6.8.2  利用指針修改閉包外部的變量 145
6.9  本章小結(jié) 146
第7章 異常處理 147
7.1  異常機(jī)制的意義 147
7.2  Go語(yǔ)言中的異常 150
7.2.1  創(chuàng)建異常 150
7.2.2  拋出異常 151
7.2.3  自定義異常 152
7.3  異常捕獲 154
7.3.1  利用延遲執(zhí)行機(jī)制來(lái)捕獲異常 155
7.3.2  在上層調(diào)用者中捕獲異常 157
7.3.3  異常捕獲的限制條件 158
7.4  異常捕獲后的資源清理 159
7.4.1  未正常釋放鎖對(duì)象帶來(lái)的副作用 160
7.4.2  確保鎖對(duì)象釋放的正確方式 162
7.5  編程范例——異常的使用及誤區(qū) 163
7.5.1  利用結(jié)構(gòu)體自定義異常 163
7.5.2  未成功捕獲異常,導(dǎo)致程序崩潰 164
7.6  本章小結(jié) 166
第8章 Go語(yǔ)言的面向?qū)ο缶幊?167
8.1  面向?qū)ο缶幊痰谋举|(zhì) 167
8.2  Go語(yǔ)言實(shí)現(xiàn)封裝 168
8.2.1  Go語(yǔ)言中字段和方法的封裝 168
8.2.2  為值類(lèi)型和指針類(lèi)型綁定方法的區(qū)別 169
8.3  Go語(yǔ)言實(shí)現(xiàn)繼承 171
8.3.1  利用組合實(shí)現(xiàn)繼承 171
8.3.2  匿名字段的支持 173
8.3.3  多繼承 174
8.4  Go語(yǔ)言實(shí)現(xiàn)多態(tài) 176
8.5  面向接口編程 178
8.5.1  Go語(yǔ)言中的接口 179
8.5.2  Go語(yǔ)言中的接口實(shí)現(xiàn) 179
8.5.3  利用面向接口編程實(shí)現(xiàn)方法多態(tài) 180
8.6  編程范例——接口的典型應(yīng)用 181
8.6.1  接口嵌套實(shí)例 181
8.6.2  偽繼承與接口實(shí)現(xiàn) 183
8.7  本章小結(jié) 184
第9章 并發(fā) 185
9.1  線程的概念 185
9.2  線程模型 187
9.3  協(xié)程的工作原理 187
9.3.1  協(xié)程的使用 188
9.3.2  GPM模型 189
9.3.3  從3種線程模型看GOMAXPROCS參數(shù) 191
9.4  Go語(yǔ)言中的協(xié)程同步 192
9.4.1  獨(dú)占鎖——Mutex 192
9.4.2  讀寫(xiě)鎖——RWMutex 195
9.4.3  等待組——WaitGroup 198
9.5  利用channel實(shí)現(xiàn)協(xié)程同步 199
9.5.1  利用channel實(shí)現(xiàn)鎖定 200
9.5.2  利用channel實(shí)現(xiàn)等待組 202
9.5.3  總結(jié)使用channel實(shí)現(xiàn)并發(fā)控制 204
9.6  讓出時(shí)間片 204
9.6.1  time.Sleep()和runtime.Gosched()的本質(zhì)區(qū)別 204
9.6.2  runtime.Gosched()與多核CPU 205
9.7  Go語(yǔ)言中的單例 206
9.7.1  利用sync.Once實(shí)現(xiàn)單例 206
9.7.2  sync.Once的實(shí)現(xiàn)原理 208
9.8  編程范例——協(xié)程池及協(xié)程中斷 209
9.8.1  協(xié)程池的實(shí)現(xiàn) 209
9.8.2  協(xié)程的中斷執(zhí)行 213
9.9  本章小結(jié) 217
第10章 上下文 218
10.1  上下文和普通參數(shù)的區(qū)別 218
10.2  上下文樹(shù) 219
10.2.1  上下文接口——Context 219
10.2.2  利用context.emptyCtx創(chuàng)建樹(shù)的根節(jié)點(diǎn) 219
10.2.3  上下文樹(shù)的構(gòu)建 220
10.3  利用valueCtx實(shí)現(xiàn)信息透?jìng)?222
10.3.1  valueCtx用于參數(shù)傳遞 222
10.3.2  從父節(jié)點(diǎn)獲得透?jìng)髦?223
10.4  利用cancelCtx通知協(xié)程終止執(zhí)行 224
10.4.1  通知子協(xié)程終止執(zhí)行 225
10.4.2  通知子協(xié)程的實(shí)現(xiàn)過(guò)程 226
10.4.3  為什么需要取消函數(shù) 230
10.5  利用timerCtx實(shí)現(xiàn)定時(shí)取消 230
10.5.1  調(diào)用context.WithDeadline()創(chuàng)建定時(shí)器上下文 231
10.5.2  調(diào)用context.WithTimeout()創(chuàng)建定時(shí)器上下文 233
10.6  編程范例——上下文的典型應(yīng)用場(chǎng)景 234
10.6.1  利用結(jié)構(gòu)體傳遞參數(shù) 234
10.6.2  valueContext為什么需要key 236
10.6.3  利用cancelCtx同時(shí)取消多個(gè)子協(xié)程 237
10.7  本章小結(jié) 239
第11章  反射 240
11.1  反射的意義 240
11.2  反射的API 241
11.2.1  利用reflect.TypeOf()來(lái)獲得類(lèi)型信息 241
11.2.2  利用reflect.Type.Kind()方法來(lái)獲取類(lèi)型的具體分類(lèi) 242
11.2.3  利用reflect.Type.Element()方法來(lái)獲取元素類(lèi)型 243
11.2.4  類(lèi)型斷言的用法與局限性 245
11.3  值信息 246
11.3.1  利用reflect.ValueOf()來(lái)獲得值信息 246
11.3.2  利用reflect.Value.Kind()來(lái)獲得值的分類(lèi)信息 247
11.3.3  利用reflect.Value.Elem()來(lái)獲得值的元素信息 248
11.3.4  利用反射訪問(wèn)和修改值信息 249
11.3.5  利用反射機(jī)制動(dòng)態(tài)調(diào)用方法 252
11.4  編程范例——動(dòng)態(tài)方法調(diào)用 255
11.5  本章小結(jié) 258
第12章  泛型 259
12.1  泛型的意義 259
12.2  泛型應(yīng)用到函數(shù) 261
12.2.1  泛型函數(shù)的使用 261
12.2.2  泛型中的隱含信息 262
12.2.3  避免類(lèi)型強(qiáng)制轉(zhuǎn)換 263
12.2.4  泛型類(lèi)型的單獨(dú)定義 264
12.3  泛型導(dǎo)致接口定義的變化 265
12.3.1  接口定義的變化 265
12.3.2  空接口的二義性 266
12.3.3  接口類(lèi)型的限制 266
12.4  泛型類(lèi)型應(yīng)用到receiver 268
12.4.1  泛型類(lèi)型不能直接用于定義receiver 268
12.4.2  間接實(shí)現(xiàn)泛型定義receiver 269
12.5  編程范例——自定義隊(duì)列的實(shí)現(xiàn) 270
12.6  本章小結(jié) 272
第13章  I/O 273
13.1  Reader和Writer 273
13.1.1  理解Reader和Writer 273
13.1.2  Reader和Writer接口 274
13.1.3  Go語(yǔ)言的I/O API要解決的問(wèn)題 275
13.1.4  文件讀取 275
13.1.5  文件寫(xiě)入 278
13.1.6  文件權(quán)限與umask 281
13.1.7  一次性讀寫(xiě) 283
13.2  緩沖區(qū)讀寫(xiě) 284
13.2.1  bufio中的Reader和Writer 285
13.2.2  利用bufio實(shí)現(xiàn)按行讀取 285
13.3  字符串?dāng)?shù)據(jù)源 287
13.3.1  strings.Reader解析 287
13.3.2  字節(jié)掃描器ByteScanner 288
13.3.3  按Rune讀取UTF-8字符 289
13.4  bufio.Scanner的使用 292
13.4.1  掃描過(guò)程及源碼解析 292
13.4.2  掃描時(shí)的最大支持 298
13.4.3  掃描時(shí)的最小容忍 301
13.5  編程范例——文件系統(tǒng)相關(guān)操作 303
13.5.1  查看文件系統(tǒng) 303
13.5.2  臨時(shí)文件 305
13.6  本章小結(jié) 307
第14章  網(wǎng)絡(luò)編程 308
14.1  網(wǎng)絡(luò)連接的本質(zhì) 308
14.2  利用TCP實(shí)現(xiàn)網(wǎng)絡(luò)通信 310
14.2.1  創(chuàng)建TCP連接 310
14.2.2  利用TCP連接進(jìn)行消息傳遞 312
14.3  利用UDP實(shí)現(xiàn)網(wǎng)絡(luò)通信 315
14.3.1  監(jiān)聽(tīng)模式 316
14.3.2  撥號(hào)模式 319
14.3.3  總結(jié)監(jiān)聽(tīng)模式和撥號(hào)模式 322
14.4  HTTP的相關(guān)操作 322
14.4.1  客戶端發(fā)送HTTP請(qǐng)求 322
14.4.2  服務(wù)端處理HTTP請(qǐng)求 326
14.4.3  HTTP請(qǐng)求源碼解析 328
14.4.4  提煉思考 333
14.5  數(shù)據(jù)傳輸過(guò)程 334
14.5.1  本地處理階段 334
14.5.2  路由器處理階段 335
14.5.3  目標(biāo)主機(jī)處理階段 335
14.5.4  網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)所扮演的角色 335
14.5.5  總結(jié)數(shù)據(jù)傳輸 336
14.6  編程范例——常見(jiàn)網(wǎng)絡(luò)錯(cuò)誤的產(chǎn)生及解決方案 336
14.6.1  模擬CLOSE_WAIT 336
14.6.2  模擬I/O timeout 341
14.6.3  模擬read: connection reset by peer異常 344
14.6.4  模擬TIME_WAIT 347
14.7  本章小結(jié) 351
第15章  RPC通信 352
15.1  如何理解RPC通信 352
15.2  Gob格式——利用HTTP和TCP實(shí)現(xiàn)RPC通信 354
15.2.1  利用HTTP實(shí)現(xiàn)RPC通信 354
15.2.2  HTTP實(shí)現(xiàn)RPC通信的原理 358
15.2.3  利用TCP實(shí)現(xiàn)RPC通信 370
15.2.4  利用HTTP和TCP實(shí)現(xiàn)RPC的區(qū)別 373
15.3  JSON格式——利用jsonrpc實(shí)現(xiàn)RPC通信 374
15.4  gRPC格式——利用gRPC實(shí)現(xiàn)RPC通信 376
15.4.1  生成RPC支持文件 377
15.4.2  gRPC調(diào)用過(guò)程 381
15.5  編程范例——基于Wireshark理解RPC通信 385
15.6  本章小結(jié) 389
第 16 章  內(nèi)存管理 390
16.1  內(nèi)存對(duì)齊 390
16.1.1  內(nèi)存空隙 390
16.1.2  內(nèi)存對(duì)齊和對(duì)齊邊界 391
16.1.3  結(jié)構(gòu)體的內(nèi)存對(duì)齊 393
16.2  內(nèi)存分級(jí)管理 395
16.2.1  分級(jí)管理的本質(zhì) 395
16.2.2  Go語(yǔ)言內(nèi)存管理的基本單位——Span 396
16.2.3  線程級(jí)別維護(hù)Span——mcache 398
16.2.4  進(jìn)程級(jí)別維護(hù)Span——mcentral 398
16.2.5  堆級(jí)別維護(hù)Span——mheap 399
16.3  Go語(yǔ)言的垃圾回收 400
16.3.1  內(nèi)存標(biāo)記——雙色標(biāo)記法 400
16.3.2  內(nèi)存標(biāo)記——三色標(biāo)記法 403
16.3.3  三色標(biāo)記法與寫(xiě)屏障 405
16.3.4  垃圾回收 406
16.3.5  垃圾回收的時(shí)機(jī) 407
16.4  編程范例——unsafe包的使用 408
16.4.1  利用unsafe修改結(jié)構(gòu)體字段 409
16.4.2  內(nèi)存地址強(qiáng)制轉(zhuǎn)換為結(jié)構(gòu)體 411
16.4.3  并非所有內(nèi)存均可修改 412
16.5  本章小結(jié) 415
第 17 章  Go語(yǔ)言中的正則表達(dá)式 416
17.1  正則表達(dá)式基礎(chǔ) 416
17.1.1  正則表達(dá)式與通配符 416
17.1.2  元字符和普通字符 417
17.1.3  字符轉(zhuǎn)義與字符類(lèi) 417
17.1.4  字符組的使用 418
17.2  Go語(yǔ)言中的正則表達(dá)式 418
17.2.1  ASCII字符類(lèi) 418
17.2.2  語(yǔ)言文字字符類(lèi) 419
17.2.3  Unicode編碼方式 420
17.3  Go語(yǔ)言中的正則表達(dá)式函數(shù) 421
17.3.1  正則表達(dá)式函數(shù) 421
17.3.2  正則表達(dá)式結(jié)構(gòu)體RegExp 423
17.4  編程范例——判斷行為序列 429
17.5  本章小結(jié) 430
第 18 章  深入理解Go——Plan 9匯編 431
18.1  Go匯編簡(jiǎn)介 432
18.1.1  為什么需要Go匯編 432
18.1.2  匯編文件——.s文件 432
18.1.3  .s文件的命名 432
18.1.4  .go文件和.s文件的編譯 433
18.2  從內(nèi)存角度看函數(shù)的調(diào)用過(guò)程 434
18.2.1  內(nèi)存布局 434
18.2.2  函數(shù)執(zhí)行過(guò)程 435
18.2.3  棧頂和棧底 437
18.2.4  棧內(nèi)存分配與內(nèi)存變量讀取 437
18.3  寄存器與內(nèi)存布局 439
18.3.1  通用寄存器 439
18.3.2  偽寄存器 439
18.3.3  自動(dòng)分配的內(nèi)存 444
18.3.4  區(qū)分通用寄存器和偽寄存器 444
18.3.5  棧幀的大小由什么決定 444
18.4  第一個(gè)Go匯編程序 445
18.4.1  利用匯編文件修改變量的值 445
18.4.2  跨包引用變量 448
18.5  利用Go匯編定義變量 449
18.5.1  全局變量和局部變量 449
18.5.2  字面量和表達(dá)式 449
18.5.3  定義字符串型變量 450
18.5.4  定義布爾型變量 453
18.5.5  定義整型變量 454
18.5.6  定義切片變量 455
18.5.7  總結(jié)變量定義 457
18.6  利用Go匯編定義函數(shù) 457
18.6.1  Go中調(diào)用匯編函數(shù) 457
18.6.2  匯編中調(diào)用Go函數(shù) 459
18.7  Go匯編中的流程控制 462
18.7.1  Go匯編中的if條件控制 462
18.7.2  Go匯編中的for循環(huán) 464
18.8  重新理解多返回值 467
18.9  編程范例——理解常用寄存器 467
18.9.1  真、偽寄存器的對(duì)比使用 467
18.9.2  驗(yàn)證偽寄存器SP和FP值的差異 469
18.10  本章小結(jié) 471
第19章  Gin處理HTTP請(qǐng)求及響應(yīng) 472
19.1  Gin框架簡(jiǎn)介 472
19.2  Gin框架與HTTP請(qǐng)求 473
19.2.1  安裝Gin框架 473
19.2.2  利用Gin框架開(kāi)發(fā)第一個(gè)HTTP接口程序 473
19.3  Gin框架處理參數(shù) 475
19.3.1  獲得URL查詢參數(shù) 475
19.3.2  獲得表單參數(shù) 476
19.3.3  獲得URL路徑參數(shù) 477
19.3.4  將JSON格式的參數(shù)解析為結(jié)構(gòu)體 478
19.3.5  將表單參數(shù)解析為結(jié)構(gòu)體 479
19.3.6  接收和處理上傳文件 480
19.4  Gin框架處理響應(yīng) 481
19.4.1  返回JSON格式的響應(yīng) 481
19.4.2  返回XML格式的響應(yīng) 483
19.4.3  返回HTML格式的響應(yīng) 484
19.4.4  文件下載 486
19.4.5  自定義響應(yīng) 487
19.5  Gin框架的路由處理 489
19.5.1  單個(gè)路由 489
19.5.2  路由組 489
19.5.3  Any方法 491
19.5.4  NoRoute和NoMethod方法 491
19.6  Gin框架的中間件 492
19.6.1  內(nèi)置中間件 492
19.6.2  自定義中間件 494
19.7  編程范例——實(shí)現(xiàn)登錄認(rèn)證 496
19.8  本章小結(jié) 499
第20章  Go語(yǔ)言實(shí)現(xiàn)MVC項(xiàng)目 500
20.1  項(xiàng)目背景 500
20.1.1  業(yè)務(wù)背景概述 500
20.1.2  技術(shù)背景概述 501
20.1.3  項(xiàng)目代碼結(jié)構(gòu) 502
20.2  利用gorm生成MySQL數(shù)據(jù)表 502
20.2.1  定義結(jié)構(gòu)體及表結(jié)構(gòu) 502
20.2.2  從結(jié)構(gòu)體到數(shù)據(jù)表 503
20.3  實(shí)現(xiàn)用戶注冊(cè) 506
20.4  實(shí)現(xiàn)用戶登錄 510
20.5  實(shí)現(xiàn)用戶查詢 512
20.6  實(shí)現(xiàn)用戶刪除 514
20.7  本章小結(jié) 516
 
 
 

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)