GO語言編程從入門到實踐( 簡體 字) | |
作者:黃永祥 | 類別:1. -> 程式設計 -> Go語言 |
出版社:清華大學出版社 | 3dWoo書號: 55819 詢問書籍請說出此書號! 有庫存 NT售價: 540 元 |
出版日:6/1/2022 | |
頁數:418 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302603894 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章認識Go語言 1
1.1Go語言簡介 1 1.2Go語言的優勢與特性 2 1.3在Windows下安裝Go 3 1.4在Linux下安裝Go 6 1.5在macOS下安裝Go 8 1.6安裝GoLand 9 1.7搭建GoLand環境 10 1.8第一個Go程序“HelloWorld” 11 1.9動手練習:編程實現人機交互 12 1.10小結 14 第2章基礎語法 15 2.1關鍵字與標識符 15 2.1.1關鍵字 15 2.1.2標識符命名規范 17 2.1.3空白標識符 18 2.1.4預聲明標識符 19 2.1.5導出標識符 21 2.1.6唯一標識符 22 2.2變量與常量 22 2.2.1變量定義與賦值 22 2.2.2常量與iota 24 2.3運算符的使用 26 2.3.1算術運算符 26 2.3.2關系運算符 27 2.3.3賦值運算符 28 2.3.4邏輯運算符 30 2.3.5位運算符 31 2.3.6其他運算符 33 2.3.7運算符優先級 33 2.4代碼注釋 34 2.5動手練習:編程實現個人健康評測 35 2.6小結 36 第3章數據類型 38 3.1整型的取值范圍 38 3.2浮點類型與精度丟失 40 3.3復數的計算 42 3.4布爾型的應用 43 3.5ASCII與Unicode編碼 44 3.6字符類型 45 3.7字符串操作 45 3.7.1字符串與轉義符 46 3.7.2字符串格式化 47 3.7.3字符串拼接 49 3.7.4獲取字符串長度 50 3.7.5遍歷字符串 51 3.7.6字符位置與截取 52 3.7.7字符串分割 53 3.7.8字符串替換 54 3.8轉換數據類型 55 3.8.1整型與浮點型 55 3.8.2整型與字符串 56 3.8.3浮點型與字符串 57 3.9動手練習:編程實現在線客服熱線 59 3.10小結 61 第4章流程控制 62 4.1if的條件判斷 62 4.2if的多層嵌套 64 4.3switch的多條件分支 65 4.4for的循環遍歷 69 4.5for-range獲取鍵值 70 4.6break越級終止循環 71 4.7continue跳過本次循環 72 4.8goto跳到指定代碼 73 4.9動手練習:編程實現簡易計算器 74 4.10小結 77 第5章指針 78 5.1指針的概念 78 5.2指針定義與空指針 79 5.3指針賦值與取值 81 5.4切片指針 83 5.5指針的指針 86 5.6動手練習:編程實現彩票36選7 87 5.7小結 90 第6章內置容器 91 6.1數組 91 6.1.1數組定義與操作 91 6.1.2數組初始化定義 92 6.1.3多維數組 93 6.2切片 95 6.2.1切片定義與操作 95 6.2.2新增切片元素 97 6.2.3截取切片元素 98 6.2.4復制切片 100 6.2.5切片長度與容量 101 6.3集合 102 6.3.1集合定義與操作 102 6.3.2刪除集合元素 104 6.4動手練習:編程實現集合與 JSON互換 104 6.5列表 107 6.5.1列表定義 107 6.5.2列表元素操作 108 6.5.3遍歷列表元素 110 6.6動手練習:編程實現產品抽樣 檢測 112 6.7小結 114 第7章函數 116 7.1函數定義與調用 116 7.2不固定參數數量 119 7.3函數以變量表示 120 7.4沒有名字的函數 121 7.5引用外部變量的函數 122 7.6函數自身調用 123 7.7動手練習:編程實現創建文件 后綴名 124 7.8小結 126 第8章結構體 127 8.1Go的“面向對象” 127 8.2結構體定義與實例化 128 8.3指針方式的實例化 130 8.4結構體標簽 131 8.5匿名結構體與匿名成員 133 8.6結構體嵌套 134 8.7自定義構造函數 136 8.8結構體方法:指針與值接收者 138 8.9動手練習:編程實現結構體與 JSON互換 140 8.10動手練習:編程實現多鍵索引 查詢數據 142 8.11小結 145 第9章接口 147 9.1接口定義與使用 147 9.2鴨子類型 150 9.3多態與工廠函數 152 9.4接口的自由組合 153 9.5任意數據類型的空接口 156 9.6接口的類型斷言 158 9.7動手練手:編程實現營救村民 游戲 161 9.8小結 166 第10章反射 168 10.1什么是反射 168 10.2第一定律:接口變量轉反射 變量 169 10.3第二定律:反射變量轉接口 變量 170 10.4第三定律:修改反射變量的值 171 10.5反射的類型與種類 173 10.6切片與反射 175 10.7集合與反射 177 10.8結構體與反射 180 10.9指針與反射 187 10.10函數與反射 190 10.11動手練習:編程實現對象序列化 處理 192 10.12小結 193 第11章并發編程 194 11.1異步的概念 194 11.2Goroutine 195 11.3函數創建Goroutine 197 11.4匿名函數創建Goroutine 199 11.5通道 200 11.6無緩沖通道 202 11.7帶緩沖通道 204 11.8關閉通道讀取數據 205 11.9Select處理多通道 207 11.10sync同步等待 208 11.11sync加鎖機制 210 11.12sync.Map的應用 214 11.13動手練習:編程模擬餐館經營 場景 219 11.14小結 221 第12章語法特性 223 12.1panic觸發宕機 223 12.2defer延時執行 224 12.3recover宕機時恢復執行 225 12.4值類型、引用類型與深淺拷貝 226 12.5類型別名與自定義 229 12.6new和make的區別 231 12.7泛型的概念與應用 234 12.8動手練習:編程實現出租車費用 計算 236 12.9小結 238 第13章包的應用與管理 239 13.1常用內置包 239 13.2包命名與導入 240 13.3包的重命名 242 13.4無包名調用 242 13.5初始化函數init()與空導入 243 13.6包的自定義與使用 245 13.7包管理工具gomod 246 13.8第三方包下載與使用 249 13.9動手練習:編程實現排序算法 251 13.10小結 255 第14章目錄與文件處理 257 14.1使用os實現系統操作 257 14.2使用path獲取路徑信息 262 14.3使用os讀寫文件 267 14.4使用io/ioutil讀寫文件 270 14.5使用bufio讀寫文件 272 14.6使用encoding/csv讀寫CSV文件 275 14.7使用encoding/json讀寫 JSON文件 278 14.8第三方包讀寫Excel文件 280 14.9動手練習:編程實現學生管理 系統 283 14.10小結 286 第15章時間處理 287 15.1時間戳 287 15.2結構體Time 289 15.3字符串格式化 290 15.4時間類型的相互轉換 292 15.5時間計算操作 293 15.6延時、超時與定時 297 15.7動手練習:編程實現個人 備忘錄 300 15.8小結 302 第16章數據庫編程 304 16.1搭建SQLite運行環境 304 16.2安裝與使用MySQL 306 16.3安裝與使用MongoDB 309 16.4安裝與使用Redis 312 16.5go-sqlite3讀寫SQLite 314 16.6go-sql-driver/mysql讀寫MySQL 317 16.7mongo-driver讀寫MongoDB 320 16.8go-redis讀寫Redis 325 16.9ORM框架:Gorm 330 16.10動手練習:編程實現員工管理 系統 335 16.11小結 337 第17章Go項目——網頁自動化測試 程序開發 339 17.1了解自動化工具Selenium 339 17.2安裝Selenium 340 17.3使用瀏覽器查找元素 342 17.4瀏覽器配置與啟動 345 17.5網頁元素定位 349 17.6網頁元素操作 353 17.7瀏覽器常用操作 356 17.8網頁加載等待 358 17.9iframe與標簽頁切換 360 17.10Cookie讀寫 363 17.11動手練習:編程實現爬取 BOSS直聘招聘數據 365 17.12小結 370 第18章Go項目——網絡爬蟲程序 開發 372 18.1HTTP與HTTPS 372 18.2請求頭 374 18.3使用瀏覽器分析網站 375 18.4使用net/http發送請求 377 18.5轉碼與HTML解析 379 18.6選擇數據存儲方式 382 18.7動手練習:編程實現爬取 電影TOP100榜單 383 18.8小結 388 第19章Go項目——網絡編程應用 389 19.1TCP和UDP的區別 389 19.2創建TCP應用 390 19.3創建UDP應用 393 19.4創建HTTP服務應用 396 19.5httprouter擴展路由 399 19.6多種響應處理方式 401 19.7HTML模板引擎 404 19.8網站項目:信息反饋平臺的開發 410 19.8.1網站功能需求 410 19.8.2項目架構設計 411 19.8.3搭建開發環境 412 19.8.4定義模型與路由 412 19.8.5編寫模板文件 415 19.8.6網站運行與測試 417 19.9小結 419 第20章編譯與運行 420 20.1run與build的區別 420 20.2單文件編譯 421 20.3同包多文件編譯 422 20.4不同包多文件編譯 422 20.5編譯參數說明 423 20.6小結 424 本書是一本來自一線開發者的Go語言編程入門書,深入淺出地講述了Go語言的語法特性和編程實踐,全書分為基礎和項目兩部分,基礎部分主要介紹Go語言開發環境的搭建、基礎語法、數據類型、指針、內置容器、函數、結構體、接口、反射、并發編程、包的應用與管理、目錄與文件管理、時間管理、數據庫編程等,項目部分主要介紹網頁自動化測試程序、網絡爬蟲程序、網絡信息反饋網站的開發實踐,此外,還介紹了Go語言程序的編譯方法。本書各章還提供了近20個動手練習小項目,便于讀者邊學邊練,迅速提升編程技能。
本書通俗易懂,體系完備,注重實踐,適合對Go語言感興趣的各層次讀者使用。 Go(又稱 Golang)語言于2007年在Google公司誕生,經過10多年的發展得到了眾多開發者的關注和廣泛應用,隨著云計算時代的到來,Go語言的簡潔、高效、并發特性和成熟的開源社區吸引了眾多傳統語言開發者的加入,而且人數越來越多。
甚至有人認為,Go語言是互聯網時代的C語言,不僅會制霸云計算,10年內還將會制霸整個IT領域。 Go語言用途眾多,比如,Go語言可以作為服務器編程語言,很適合處理日志、數據打包、虛擬機處理、文件系統、分布式系統、數據庫代理等;在網絡編程方面,Go語言廣泛應用于Web 應用、API應用、下載應用等;除此之外,Go語言還適用于內存數據庫和云平臺領域,目前國外很多云平臺都是采用Go開發的。總之,Go語言在云計算開發、網絡編程、運維開發等領域都有廣泛的應用。本書正是為使廣大讀者能夠掌握Go這一強大好用的語言而編寫的。 本書結合筆者多年一線開發經驗,力圖使用通俗易懂、深入淺出的描述和豐富的動手練習示例,介紹Go語言的語法特性和編程實踐。書中還提供了多個項目,讀者在學習本書之后,不僅可以掌握Go語言的使用,還可以自己動手開發實際應用。 本書結構 本書分為基礎和項目兩部分,全書共20章,其中基礎部分為第1~16章,項目部分為第17~19章,最后一章介紹了Go程序的編譯,各章內容簡要介紹如下: 第1章介紹Go語言的發展歷程、開發環境搭建、代碼編輯器的安裝和入門代碼編寫。 第2章介紹關鍵字、標識符、變量、常量、運算符和代碼注釋等入門知識。 第3章講述數據類型,即整型、浮點數、復數、布爾型和字符串,還介紹了浮點數精度丟失的解決方案、ASCII與Unicode編碼差異、字符串操作和數據類型轉換。 第4章講述流程控制——判斷和循環。判斷包含if和switch語句,循環包含for、for-range、break、continue和goto語句。 第5章講述指針的概念、定義與空指針、指針賦值與取值、切片指針和指針的指針等。 第6章講述內置容器,包括數組、切片、集合和列表,分別介紹各個容器的定義與應用。 第7章講述函數的應用,包括函數的定義與調用、設置不固定函數參數、函數變量、匿名函數、閉包和遞歸函數。 第8章講述結構體應用,包括結構體定義與實例化、設置結構體標簽、匿名結構體與匿名成員、結構體嵌套、自定義構造函數和結構體方法。 第9章講述接口應用,包括接口定義與使用、鴨子類型、多態與工廠函數、接口組合、空接口和接口的類型斷言。 第10章講述反射機制,包括反射3大定律、反射類型與種類以及不同數據類型的反射操作。 第11章講述并發編程,包括異步概念、函數創建并發、通道變量、無緩沖通道、帶緩沖通道、Select處理多通道、sync同步等待、sync加鎖機制和sync.Map的應用。 第12章講述語法特征,包括panic觸發宕機、defer延時執行、recover宕機時恢復執行、值類型、引用類型與深淺拷貝、類型別名與自定義、關鍵字new和make的區別。 第13章講述包的應用與管理,包括常用內置包、包命名與導入、包的重命名、無包名調用、初始化函數init()與空導入、包管理工具go mod和第三方包的下載與使用。 第14章講述系統目錄與文件處理,分別介紹內置包os、io/ioutil、bufio、encoding/csv、encoding/json和第三方包excelize實現目錄與文件的讀寫處理。 第15章講述時間處理,由內置包time生成不同類型的時間格式——時間戳、結構體Time和字符串格式化,并講述時間類型轉換、加減運算、延時、超時和定時等功能。 第16章講述數據庫編程,闡述如何安裝不同的數據庫,使用第三方包實現SQLite、MySQL、MongoDB和Redis的編程應用。 第17章講述網頁自動化測試開發,搭建自動化測試開發環境和闡述第三方包tebeka/selenium的使用。 第18章講述網絡爬蟲開發,介紹網絡爬蟲知識要點,使用內置包net/http、第三方包goquery、mahonia等實現爬蟲開發。 第19章講述網絡編程應用,介紹網絡編程知識,使用內置包net/http開發HTTP服務、第三方包httprouter擴展路由功能、html/template生成HTML網頁等Web應用開發。 第20章講述內置指令go build的編譯功能,實現單文件、多文件、不同包多文件等編譯處理以及編譯參數說明。 本書特色 ? 循序漸進,從零基礎入手:本書從初學者必備的基礎知識入手,循序漸進地介紹Go語言的語法特性和基礎理論,適合沒有接觸過Go語言編程的讀者使用。 ? 實例豐富,由淺入深:本書每個知識點都配以實例進行講解,各章最后還提供了動手練習小項目。實例選擇從易到難,結合了筆者的實際開發經驗,動手練習可以幫助讀者鞏固知識、提升技能,解決實際開發中遇到的各種問題。 ? 注重實踐,適合不同層次的讀者:本書既適合初學者閱讀,也適合不同崗位的從業者使用。本書根據筆者多年從業經驗編寫,書中涉及的用Go語言開發爬蟲、開發自動化測試程序、開發網站項目,可以滿足各類開發人員的需求。 源代碼下載 讀者可登錄GitHub下載本書源代碼。 也可以掃描以下二維碼下載源代碼: 如果下載有問題,請發送郵件,郵件主題為“Go語言編程從入門到 實踐”。 讀者對象 本書主要適合以下讀者閱讀: ? 從零開始學習Go語言編程的初學者。 ? 各類開發崗位的從業者,如爬蟲開發人員、測試人員和后端開發人員等。 ? 培訓機構和大專院校的學生。 筆者從事編程工作近10年,本書可以說是來自開發實踐的經驗心得,雖然力臻完美,但限于水平,難免會存在疏漏之處,歡迎廣大讀者及業界專家不吝指正。 黃永祥 2022年3月2日 |