Go語言從入門到進階實戰(視頻教學版)

Go語言從入門到進階實戰(視頻教學版) 下載 mobi epub pdf 電子書 2024


簡體網頁||繁體網頁
徐波 著



點擊這裡下載
    


想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

發表於2024-11-30

類似圖書 點擊查看全場最低價

圖書介紹

齣版社: 機械工業齣版社
ISBN:9787111598244
版次:1
商品編碼:12380444
品牌:機工齣版
包裝:平裝
開本:16開
齣版時間:2018-06-01
用紙:膠版紙
頁數:398


相關圖書





圖書描述

內容簡介

本書采用“理論+實例”的形式編寫,作者通過大量實例,並結閤多年的一綫開發實戰經驗,全麵介紹瞭Go語言的語法及應用開發。作者特意為本書精心錄製瞭同步配套教學視頻,這將極大地提升讀者的學習效率。本書分為13章,主要介紹瞭Go語言的特性與環境搭建、基本語法與使用、容器(存儲和組織數據的方式)、流程控製、函數、結構體、接口(interface)、包(package)、並發、反射、編譯與工具和開發技巧等內容,後的實戰演練部分剖析瞭作者的開源網絡庫cellnet的架構及設計思想,並且實現瞭Socket聊天功能。本書對於Go語言的特色功能——並發,有全麵、深入的講解,需要讀者重點學習。本書特彆適閤Go語言初學者入門和進階閱讀,另外也適閤社會培訓學校作為教材使用,還適閤大中專院校的相關專業作為教學參考書。

目錄

目錄
配套學習資源
前言
第1章 初識Go語言1
1.1 Go語言特性1
1.2 使用Go語言的項目9
1.3 怎樣安裝Go語言開發包10
1.3.1 Windows版安裝11
1.3.2 Linux版安裝13
1.4 搭建開發環境14
1.4.1 集成開發環境——Jetbrains GoLand14
1.4.2 方便定義功能的編輯器——Visual Studio Code15
第2章 Go語言基本語法與使用19
2.1 變量19
2.1.1 聲明變量19
2.1.2 初始化變量20
2.1.3 多個變量同時賦值23
2.1.4 匿名變量——沒有名字的變量24
2.2 數據類型24
2.2.1 整型25
2.2.2 浮點型25
2.2.3 示例:輸齣正弦函數(Sin)圖像26
2.2.4 布爾型28
2.2.5 字符串29
2.2.6 字符31
2.2.7 切片——能動態分配的空間32
2.3 轉換不同的數據類型33
2.4 指針34
2.4.1 認識指針地址和指針類型35
2.4.2 從指針獲取指針指嚮的值36
2.4.3 使用指針修改值37
2.4.4 示例:使用指針變量獲取命令行的輸入信息39
2.4.5 創建指針的另一種方法——new()函數40
2.5 變量生命期——變量能夠使用的代碼範圍40
2.5.1 什麼是棧41
2.5.2 什麼是堆42
2.5.3 變量逃逸(Escape Analysis)——自動決定變量分配方式,提高運行效率43
2.6 字符串應用46
2.6.1 計算字符串長度46
2.6.2 遍曆字符串——獲取每一個字符串元素47
2.6.3 獲取字符串的某一段字符48
2.6.4 修改字符串49
2.6.5 連接字符串49
2.6.6 格式化50
2.6.7 示例:Base64編碼——電子郵件的基礎編碼格式51
2.6.8 示例:從INI配置文件中查詢需要的值52
2.7 常量——恒定不變的值57
2.7.1 枚舉——一組常量值58
2.7.2 將枚舉值轉換為字符串59
2.8 類型彆名(Type Alias)60
2.8.1 區分類型彆名與類型定義61
2.8.2 非本地類型不能定義方法62
2.8.3 在結構體成員嵌入時使用彆名63
第3章 容器:存儲和組織數據的方式65
3.1 數組——固定大小的連續空間65
3.1.1 聲明數組66
3.1.2 初始化數組66
3.1.3 遍曆數組——訪問每一個數組元素67
3.2 切片(slice)——動態分配大小的連續空間67
3.2.1 從數組或切片生成新的切片68
3.2.2 聲明切片70
3.2.3 使用make()函數構造切片71
3.2.4 使用append()函數為切片添加元素71
3.2.5 復製切片元素到另一個切片73
3.2.6 從切片中刪除元素74
3.3 映射(map)——建立事物關聯的容器76
3.3.1 添加關聯到map並訪問關聯和數據76
3.3.2 遍曆map的“鍵值對”——?訪問每一個map中的關聯關係77
3.3.3 使用delete()函數從map中刪除鍵值對79
3.3.4 清空map中的所有元素79
3.3.5 能夠在並發環境中使用的map——?sync.Map79
3.4 列錶(list)——可以快速增刪的非連續空間的容器81
3.4.1 初始化列錶83
3.4.2 在列錶中插入元素83
3.4.3 從列錶中刪除元素84
3.4.4 遍曆列錶——訪問列錶的每一個元素85
第4章 流程控製87
4.1 條件判斷(if)87
4.2 構建循環(for)88
4.2.1 for中的初始語句——開始循環時執行的語句89
4.2.2 for中的條件錶達式——控製是否循環的開關89
4.2.3 for中的結束語句——每次循環結束時執行的語句90
4.3 示例:九九乘法錶90
4.4 鍵值循環(for range)——直接獲得對象的索引和數據91
4.4.1 遍曆數組、切片——獲得索引和元素92
4.4.2 遍曆字符串——獲得字符92
4.4.3 遍曆map——獲得map的鍵和值92
4.4.4 遍曆通道(channel)——接收通道數據93
4.4.5 在遍曆中選擇希望獲得的變量93
4.5 分支選擇(switch)——擁有多個條件分支的判斷94
4.5.1 基本寫法95
4.5.2 跨越case的fallthrough——兼容C語言的case設計96
4.6 跳轉到指定代碼標簽(goto)96
4.6.1 使用goto退齣多層循環96
4.6.2 使用goto集中處理錯誤97
4.6.3 統一錯誤處理98
4.7 跳齣指定循環(break)——可以跳齣多層循環99
4.8 繼續下一次循環(continue)100
第5章 函數(function)101
5.1 聲明函數101
5.1.1 普通函數的聲明形式101
5.1.2 參數類型的簡寫102
5.1.3 函數的返迴值102
5.1.4 調用函數104
5.1.5 示例:將“秒”解析為時間單位104
5.1.6 示例:函數中的參數傳遞效果測試105
5.2 函數變量——把函數作為值保存到變量中108
5.3 示例:字符串的鏈式處理——操作與數據分離的設計技巧109
5.4 匿名函數——沒有函數名字的函數112
5.4.1 定義一個匿名函數112
5.4.2 匿名函數用作迴調函數113
5.4.3 使用匿名函數實現操作封裝113
5.5 函數類型實現接口——把函數作為接口來調用115
5.5.1 結構體實現接口115
5.5.2 函數體實現接口116
5.5.3 HTTP包中的例子117
5.6 閉包(Closure)——引用瞭外部變量的匿名函數118
5.6.1 在閉包內部修改引用的變量119
5.6.2 示例:閉包的記憶效應119
5.6.3 示例:閉包實現生成器121
5.7 可變參數——參數數量不固定的函數形式122
5.7.1 fmt包中的例子122
5.7.2 遍曆可變參數列錶——獲取每一個參數的值123
5.7.3 獲得可變參數類型——獲得每一個參數的類型124
5.7.4 在多個可變參數函數中傳遞參數125
5.8 延遲執行語句(defer)127
5.8.1 多個延遲執行語句的處理順序127
5.8.2 使用延遲執行語句在函數退齣時釋放資源127
5.9 處理運行時發生的錯誤131
5.9.1 net包中的例子131
5.9.2 錯誤接口的定義格式132
5.9.3 自定義一個錯誤132
5.9.4 示例:在解析中使用自定義錯誤133
5.10 宕機(panic)——程序終止運行135
5.10.1 手動觸發宕機135
5.10.2 在運行依賴的必備資源缺失時主動觸發宕機136
5.10.3 在宕機時觸發延遲執行語句136
5.11 宕機恢復(recover)——防止程序崩潰137
5.11.1 讓程序在崩潰時繼續執行137
5.11.2 panic和recover的關係139
第6章 結構體(struct)141
6.1 定義結構體141
6.2 實例化結構體——為結構體分配內存並初始化142
6.2.1 基本的實例化形式142
6.2.2 創建指針類型的結構體143
6.2.3 取結構體的地址實例化143
6.3 初始化結構體的成員變量144
6.3.1 使用“鍵值對”初始化結構體145
6.3.2 使用多個值的列錶初始化結構體146
6.3.3 初始化匿名結構體147
6.4 構造函數——結構體和類型的一係列初始化操作的函數封裝148
6.4.1 多種方式創建和初始化結構體——模擬構造函數重載149
6.4.2 帶有父子關係的結構體的構造和初始化——模擬父級構造調用149
6.5 方法150
6.5.1 為結構體添加方法151
6.5.2 接收器——方法作用的目標152
6.5.3 示例:二維矢量模擬玩傢移動155
6.5.4 為類型添加方法160
6.5.5 示例:使用事件係統實現事件的響應和處理165
6.6 類型內嵌和結構體內嵌170
6.6.1 聲明結構體內嵌170
6.6.2 結構內嵌特性172
6.6.3 使用組閤思想描述對象特性173
6.6.4 初始化結構體內嵌174
6.6.5 初始化內嵌匿名結構體175
6.6.6 成員名字衝突177
6.7 示例:使用匿名結構體分離JSON數據178
第7章 接口(interface)181
7.1 聲明接口181
7.1.1 接口聲明的格式181
7.1.2 開發中常見的接口及寫法182
7.2 實現接口的條件182
7.2.1 接口被實現的條件一:接口的方法與實現接口的類型方法格式一緻182
7.2.2 條件二:接口中所有方法均被實現185
7.3 理解類型與接口的關係186
7.3.1 一個類型可以實現多個接口186
7.3.2 多個類型可以實現相同的接口187
7.4 示例:便於擴展輸齣方式的日誌係統189
7.5 示例:使用接口進行數據的排序195
7.5.1 使用sort.Interface接口進行排序195
7.5.2 常見類型的便捷排序197
7.5.3 對結構體數據進行排序199
7.6 接口的嵌套組閤——將多個接口放在一個接口內202
7.7 在接口和類型間轉換205
7.7.1 類型斷言的格式205
7.7.2 將接口轉換為其他接口205
7.7.3 將接口轉換為其他類型208
7.8 空接口類型(interface{})——能保存所有值的類型208
7.8.1 將值保存到空接口209
7.8.2 從空接口獲取值209
7.8.3 空接口的值比較210
7.9 示例:使用空接口實現可以保存任意值的字典211
7.10 類型分支——批量判斷空接口中變量的類型214
7.10.1 類型斷言的書寫格式214
7.10.2 使用類型分支判斷基本類型215
7.10.3 使用類型分支判斷接口類型215
7.11 示例:實現有限狀態機(FSM)217
第8章 包(package)227
8.1 工作目錄(GOPATH)227
8.1.1 使用命令行查看GOPATH信息227
8.1.2 使用GOPATH的工程結構228
8.1.3 設置和使用GOPATH229
8.1.4 在多項目工程中使用GOPATH230
8.2 創建包package——編寫自己的代碼擴展231
8.3 導齣標識符——讓外部訪問包的類型和值231
8.3.1 導齣包內標識符231
8.3.2 導齣結構體及接口成員232
8.4 導入包(import)——在代碼中使用其他的代碼232
8.4.1 默認導入的寫法233
8.4.2 導入包後自定義引用的包名234
8.4.3 匿名導入包——隻導入包但不使用包內類型和數值235
8.4.4 包在程序啓動前的初始化入口:init235
8.4.5 理解包導入後的init()函數初始化順序235
8.5 示例:工廠模式自動注冊——管理多個包的結構體237
第9章 並發241
9.1 輕量級綫程(goroutine)——根據需要隨時創建的“綫程”241
9.1.1 使用普通函數創建goroutine241
9.1.2 使用匿名函數創建goroutine244
9.1.3 調整並發的運行性能(GOMAXPROCS)245
9.1.4 理解並發和並行245
9.1.5 Go語言的協作程序(goroutine)和普通的協作程序(coroutine)246
9.2 通道(channel)——在多個goroutine間通信的管道246
9.2.1 通道的特性247
9.2.2 聲明通道類型247
9.2.3 創建通道248
9.2.4 使用通道發送數據248
9.2.5 使用通道接收數據249
9.2.6 示例:並發打印252
9.2.7 單嚮通道——通道中的單行道254
9.2.8 帶緩衝的通道255
9.2.9 通道的多路復用——同時處理接收和發送多個通道的數據257
9.2.10 示例:模擬遠程過程調用(RPC)258
9.2.11 示例:使用通道響應計時器的事件261
9.2.12 關閉通道後繼續使用通道264
9.3 示例:Telnet迴音服務器——TCP服務器的基本結構266
9.4 同步——保證並發環境下數據訪問的正確性273
9.4.1 競態檢測——檢測代碼在並發環境下可能齣現的問題273
9.4.2 互斥鎖(sync.Mutex)——保證同時隻有一個goroutine可以訪問共享資源275
9.4.3 讀寫互斥鎖(sync.RWMutex)——在讀比寫多的環境下比互斥鎖更高效277
9.4.4 等待組(sync.WaitGroup)——保證在並發環境中完成指定數量的任務277
第10章 反射280
10.1 反射的類型對象(reflect.Type)280
10.1.1 理解反射的類型(Type)與種類(Kind)281
10.1.2 指針與指針指嚮的元素283
10.1.3 使用反射獲取結構體的成員類型284
10.1.4 結構體標簽(Struct Tag)——對結構體字段的額外信息標簽287
10.2 反射的值對象(reflect.Value)288
10.2.1 使用反射值對象包裝任意值288
10.2.2 從反射值對象獲取被包裝的值289
10.2.3 使用反射訪問結構體的成員字段的值290
10.2.4 反射對象的空和有效性判斷292
10.2.5 使用反射值對象修改變量的值293
10.2.6 通過類型創建類型的實例297
10.2.7 使用反射調用函數298
10.3 示例:將結構體的數據保存為JSON格式的文本數據299
第11章 編譯與工具306
11.1 編譯(go build)306
11.1.1 go build 無參數編譯306
11.1.2 go build+文件列錶307
11.1.3 go build +包308
11.1. 4 go build編譯時的附加參數310
11.2 編譯後運行(go run)310
11.3 編譯並安裝(go install)311
11.4 一鍵獲取代碼、編譯並安裝(go get)312
11.4.1 遠程包的路徑格式312
11.4.2 go get + 遠程包312
11.4.3 go get使用時的附加參數313
11.5 測試(go test)313
11.5.1 單元測試——測試和驗證代碼的框架313
11.5.2 基準測試——獲得代碼內存占用和運行效率的性能數據316
11.6 性能分析(go pprof)——發現代碼性能問題的調用位置319
11.6.1 安裝第三方圖形化顯式分析數據工具(Graphviz)319
11.6.2 安裝第三方性能分析來分析代碼包319
11.6.3 性能分析代碼319
第12章 “避坑”與技巧323
12.1 閤理地使用並發特性323
12.1.1 瞭解goroutine的生命期時再創建goroutine323
12.1.2 避免在不必要的地方使用通道326
12.2 反射:性能和靈活性的雙刃劍330
12.3 接口的nil判斷335
12.4 map的多鍵索引——多個數值條件可以同時查詢336
12.4.1 基於哈希值的多鍵索引及查詢337
12.4.2 利用map特性的多鍵索引及查詢341
12.4.3 總結342
12.5 優雅地處理TCP粘包342
第13章 實戰演練——剖析cellnet網絡庫設計並實現Socket聊天功能354
13.1 瞭解cellet網絡庫特性、流程及架構354
13.1.1 cellnet網絡庫的特性354
13.1.2 cellnet網絡庫的流程及架構356
13.2 管理TCP Socket連接356
13.2.1 理解Socket的事件類型357
13.2.2 管理事件迴調359
13.2.3 連接器(Connector)361
13.2.4 會話管理(SessionManager)363
13.2.5 接受器(Acceptor)366
13.3 組織接收和發送數據流程的Socket會話(Session)367
13.3.1 在會話開始時啓動goroutine和派發事件368
13.3.2 會話中的接收數據循環369
13.3.3 會話中的發送數據循環370
13.4 排隊處理 Go語言從入門到進階實戰(視頻教學版) 下載 mobi epub pdf txt 電子書 格式

Go語言從入門到進階實戰(視頻教學版) mobi 下載 pdf 下載 pub 下載 txt 電子書 下載 2024

Go語言從入門到進階實戰(視頻教學版) 下載 mobi pdf epub txt 電子書 格式 2024

Go語言從入門到進階實戰(視頻教學版) 下載 mobi epub pdf 電子書
想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

用戶評價

評分

評分

評分

評分

評分

評分

評分

評分

評分

類似圖書 點擊查看全場最低價

Go語言從入門到進階實戰(視頻教學版) mobi epub pdf txt 電子書 格式下載 2024


分享鏈接




相關圖書


本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

友情鏈接

© 2024 book.qciss.net All Rights Reserved. 圖書大百科 版權所有