本書全面介紹了Go語言的特點、安裝部署環境、工程規范、工具鏈、語言語法、并發編程模型以及在多個編程實戰中的應用,重點闡述了Go語言并發編程模型和機制。本書共分為四個部分,介紹了Go語言編程環境搭建、Go語言基礎編程、Go語言并發編程方法及其原理,以及使用Go語言開發的應用系統的案例講解。
本書適用于有一定計算機編程基礎的從業者以及對Go語言編程感興趣的愛好者,非常適合作為Go語言編程進階教程。
郝林 Gopher、高級Java軟件工程師、Python程序員和Linux愛好者。目前在宜信公司的小微企業增值服務中心任軟件系統架構師。曾就職于搜狐網多年,并任Java項目經理。在互聯網軟件的設計和開發方面擁有豐富的實戰經驗。微博名:特價蘿卜。
1. 全面介紹Go語言基礎編程。本書通過5個章節詳細地介紹了Go的語言細節和底層實現細節,貫穿于語言層面和源碼層面,讓讀者可以對Go語言的實現有更加深刻的理解。 2. 直擊Go語言的精髓和最大亮點——并發編程技術。本書最大的看點和特色在于并發編程。本書深入剖析了并發編程模型及其在多個編程實戰中的應用,重點闡述了Go語言并發編程模型和機制,詳細介紹了Go并發編程的核心要素——Goroutine和Channel的概念、原理、基本用法和高級技巧應用,以及編寫并發程序的過程中對各種同步工具的運用等問題。 3. 示例全面詳細。本書展示和細致講解了各種各樣的代碼實例,尤其是包含了像載荷發生器和網絡爬蟲框架這樣的實用程序,讓讀者可以對并發、線程、信號等概念有清晰的理解。
第一部分 Go語言的世界 第1章 初識Go語言 2 1.1 Go語言特性一瞥 2 1.2 Go語言的優劣 3 1.3 怎樣學習Go語言 4 1.4 本章小結 5 第2章 Go語言環境搭建 6 2.1 安裝和設置 6 2.1.1 Linux 6 2.1.2 Windows 9 2.2 工程結構 10 2.2.1 工作區 10 2.2.2 GOPATH 11 2.2.3 源碼文件 11 2.2.4 代碼包 14 2.3 標準命令概述 17 2.4 本章小結 18 第二部分 編程基礎 第3章 詞法與數據類型 20 3.1 基本詞法 20 3.1.1 標識符 21 3.1.2 關鍵字 22 3.1.3 字面量 23 3.1.4 類型 24 3.1.5 操作符 26 3.1.6 表達式 33 3.2 數據類型 43 3.2.1 基本數據類型 44 3.2.2 數組 48 3.2.3 切片 52 3.2.4 字典 61 3.2.5 函數和方法 64 3.2.6 接口 72 3.2.7 結構體 76 3.2.8 指針 84 3.2.9 數據初始化 87 3.3 數據的使用 90 3.3.1 賦值語句 90 3.3.2 常量與變量 93 3.3.3 可比性與有序性 101 3.3.4 類型轉換 108 3.3.5 內建函數 114 3.4 本章小結 118 第4章 流程控制方法 119 4.1 基本流程控制 119 4.1.1 代碼塊和作用域 119 4.1.2 if語句 121 4.1.3 switch語句 124 4.1.4 for語句 129 4.1.5 goto語句 137 4.2 defer語句 141 4.3 異常處理 145 4.3.1 error 146 4.3.2 panic和recover 149 4.4 實戰演練——Set 154 4.5 實戰演練——Ordered Map 163 4.6 本章小結 173 第5章 程序測試和文檔 174 5.1 程序測試 174 5.1.1 功能測試 174 5.1.2 基準測試 180 5.1.3 樣本測試 187 5.1.4 測試運行記錄 189 5.1.5 測試覆蓋率 193 5.2 程序文檔 201 5.3 本章小結 205 第三部分 并發編程 第6章 并發編程綜述 208 6.1 并發編程基礎 208 6.1.1 串行程序與并發程序 209 6.1.2 并發程序與并行程序 209 6.1.3 并發程序與并發系統 210 6.1.4 并發程序的不確定性 210 6.1.5 并發程序內部的交互 210 6.2 多進程編程 211 6.2.1 進程 211 6.2.2 關于同步 217 6.2.3 管道 222 6.2.4 信號 228 6.2.5 Socket 238 6.3 多線程編程 260 6.3.1 線程 261 6.3.2 線程的同步 268 6.4 多線程與多進程 285 6.5 多核時代的并發編程 286 6.6 Go語言的并發編程 290 6.6.1 線程實現模型 290 6.6.2 調度器 299 6.6.3 更多的細節 311 6.7 本章小結 315 第7章 Goroutine和Channel 316 7.1 Goroutine的使用 316 7.1.1 go語句與Goroutine 316 7.1.2 Goroutine的運作過程 321 7.1.3 runtime包與Goroutine 322 7.1.4 Happens Before 326 7.2 Channel 327 7.2.1 Channel是什么 328 7.2.2 單向Channel 335 7.2.3 for語句與Channel 342 7.2.4 select語句 344 7.2.5 非緩沖的Channel 352 7.2.6 time包與Channel 358 7.3 實戰演練——載荷發生器 363 7.3.1 參數和結果 364 7.3.2 基本結構 365 7.3.3 初始化 369 7.3.4 啟動和停止 376 7.3.5 調用器和功能測試 389 7.4 本章小結 401 第8章 同步 402 8.1 鎖的使用 402 8.2 條件變量 411 8.3 原子操作 414 8.4 只會執行一次 420 8.5 WaitGroup 423 8.6 臨時對象池 426 8.7 實戰演練——Concurrent Map 429 8.8 本章小結 436 第四部分 編程實戰 第9章 一個網絡爬蟲框架的設計和實現 438 9.1 網絡爬蟲與框架 438 9.2 功能需求和分析 440 9.3 總體設計 441 9.4 詳細設計 443 9.4.1 基本數據結構 443 9.4.2 接口的設計 449 9.5 中間件的實現 459 9.5.1 通道管理器 460 9.5.2 實體池 470 9.5.3 停止信號 477 9.5.4 ID生成器 480 9.6 處理模塊的實現 482 9.6.1 網頁下載器 483 9.6.2 分析器 488 9.6.3 條目處理管道 494 9.7 調度器的實現 498 9.7.1 基本結構 499 9.7.2 主要的函數和方法 502 9.7.3 請求緩存 521 9.7.4 摘要信息的類型 524 9.8 一個使用演示 530 9.8.1 再看調度器參數 530 9.8.2 開啟調度器 535 9.8.3 調度器監控函數 542 9.9 當前的不足和解決思路 552 9.10 本章小結 555 附錄 Go語言的學習資源 557
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。