预购商品
书目分类
特别推荐
本書是一本來自一線開發者的Go語言編程入門書,深入淺出地講述了Go語言的語法特性和編程實踐,全書分為基礎和項目兩部分,基礎部分主要介紹Go語言開發環境的搭建、基礎語法、數據類型、指針、內置容器、函數、結構體、接口、反射、併發編程、包的應用與管理、目錄與文件管理、時間管理、數據庫編程等,項目部分主要介紹網頁自動化測試程序、網絡爬蟲程序、網絡信息反饋網站的開發實踐,此外,還介紹了Go語言程序的編譯方法。本書各章還提供了近20個動手練習小項目,便於讀者邊學邊練,迅速提升編程技能。 本書通俗易懂,體系完備,注重實踐,適合對Go語言感興趣的各層次讀者使用。 黃永祥,資深軟件工程師,從業10年,先後從事過系統開發和自動化開發,精通(B/S和C/S)自動化測試技術,尤其是對Go語言、Python語言及Gin、Django等Web框架擁有豐富的經驗。已出版《實戰Python網絡爬蟲》《Django Web應用開發實戰》《精通Python自動化編程》等多部IT技術圖書。
第1章 認識Go語言 1 1.1 Go語言簡介 1 1.2 Go語言的優勢與特性 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程式“Hello World” 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.5 ASCII與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.1 if的條件判斷 62 4.2 if的多層嵌套 64 4.3 switch的多條件分支 65 4.4 for的迴圈遍歷 69 4.5 for-range獲取鍵值 70 4.6 break越級終止迴圈 71 4.7 continue跳過本次迴圈 72 4.8 goto跳到指定代碼 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.1 Go的“物件導向” 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.2 Goroutine 195 11.3 函數創建Goroutine 197 11.4 匿名函數創建Goroutine 199 11.5 通道 200 11.6 無緩衝通道 202 11.7 帶緩衝通道 204 11.8 關閉通道讀取資料 205 11.9 Select處理多通道 207 11.10 sync同步等待 208 11.11 sync加鎖機制 210 11.12 sync.Map的應用 214 11.13 動手練習:程式設計模擬餐館經營場景 219 11.14 小結 221 第12章 語法特性 223 12.1 panic觸發宕機 223 12.2 defer延時執行 224 12.3 recover宕機時恢復執行 225 12.4 數值型別、參考類型與深淺拷貝 226 12.5 類型別名與自訂 229 12.6 new和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 包管理工具go mod 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.5 go-sqlite3讀寫SQLite 314 16.6 go-sql-driver/mysql讀寫MySQL 317 16.7 mongo-driver讀寫MongoDB 320 16.8 go-redis讀寫Redis 325 16.9 ORM框架: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.9 與標籤頁切換 360 17.10 Cookie讀寫 363 17.11 動手練習:程式設計實現爬取BOSS直聘招聘資料 365 17.12 小結 370 第18章 Go專案——網路爬蟲程式開發 372 18.1 HTTP與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.1 TCP和UDP的區別 389 19.2 創建TCP應用 390 19.3 創建UDP應用 393 19.4 創建HTTP服務應用 396 19.5 httprouter擴展路由 399 19.6 多種回應處理方式 401 19.7 HTML範本引擎 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.1 run與build的區別 420 20.2 單檔編譯 421 20.3 同包多檔編譯 422 20.4 不同包多檔編譯 422 20.5 編譯參數說明 423 20.6 小結 424
黃永祥,資訊管理與資訊系統專業學士,曾從事過系統開發和自動化開發,精通B/S和C/S自動化測試技術,多年網路爬蟲開發經驗,對反爬蟲機制有獨到的見解,精通Flask、Django等Web框架並有豐富的網站開發經驗。曾就職于廣州易點科技有限公司,擔任Python開發工程師,目前就職于廣東資料集成有限公司。熱愛分享和新技術的探索,在CSDN上發表多篇Python技術文章。
客服公告
热门活动
订阅电子报