预购商品
书目分类
特别推荐
主要內容 ● 如何配置Go語言環境,並提供設計、開發和測試Go應用程序的入門指南。 ● 對基本數據結構(如映射、切片和數組)的實際討論。 ● gRPC和併發的基本原理。 ● 在Go語言中設計和開發API的基礎知識。
第I部分 Go編程語言的基礎知識 第1課 初識Go語言 2 1.1 安裝Go 2 1.1.1 下載安裝文件 3 1.1.2 開始安裝Go 4 1.2 對安裝結果進行測試 6 1.3 創建Hello, World!程序 8 1.3.1 編譯並運行程序 9 1.3.2 其他運行方法 10 1.3.3 調試Hello,World!程序 11 1.3.4 格式化Go代碼 12 1.4 安裝多個版本的Go 13 1.5 Go的在線編輯器:Go Playground 13 1.6 本課小結 14 1.7 本課練習 15 第2課 Go語言基礎 17 2.1 理解語句和標記 17 2.2 語句 18 2.3 注釋 20 2.3.1 單行注釋 20 2.3.2 塊注釋或多行注釋 22 2.4 標識符 22 2.4.1 大小寫 24 2.4.2 命名約定 25 2.5 關鍵字 26 2.6 本課小結 27 2.7 本課練習 27 第3課 使用變量 31 3.1 變量 31 3.1.1 命名變量 33 3.1.2 聲明和初始化變量 33 3.2 靜態和動態類型聲明 35 3.2.1 混合聲明類型 37 3.2.2 在單條語句中混合類型聲明 38 3.3 變量作用域 39 3.4 獲取用戶輸入 40 3.4.1 內存地址 40 3.4.2 掃描值 41 3.5 將字符串轉換為數字 43 3.6 數值數據類型 46 3.6.1 獨立於體系結構的整數類型 47 3.6.2 超出範圍的值 49 3.6.3 特定於實現的整數類型 49 3.6.4 浮點類型 50 3.7 本課小結 52 3.8 本課練習 52 第4課 執行運算 55 4.1 算術運算 55 4.1.1 混合數字類型 57 4.1.2 數字類型轉換 59 4.1.3 PEMDAS運算規則 60 4.2 賦值運算 62 4.2.1 加法和減法賦值運算 63 4.2.2 乘法、除法和求模賦值運算 64 4.3 使用布爾值 65 4.4 關係運算 66 4.4.1 為布爾變量賦值 67 4.4.2 在關係運算中使用不匹配的類型 68 4.5 布爾運算 69 4.6 數學函數 70 4.7 位運算 72 4.8 隨機數 73 4.8.1 限制值的範圍 74 4.8.2 隨機數生成器中的種子 75 4.9 本課小結 76 4.10 本課練習 76 第5課 用條件語句控制程序流程 80 5.1 條件語句 80 5.2 使用if語句 81 5.3 使用多個條件 83 5.4 使用if-else語句 85 5.5 創建嵌套的if語句 86 5.6 使用switch語句 88 5.6.1 使用fallthrough執行多個case 90 5.6.2 在一個case中使用多個表達式 92 5.6.3 在case中使用條件語句 93 5.7 本課小結 94 5.8 本課練習 95 第6課 用循環控制程序流程 99 6.1 循環語句 99 6.2 for循環 101 6.2.1 for循環中的可選項 103 6.2.2 Go中的while語句 104 6.2.3 無限循環 106 6.3 遍歷字符串 107 6.4 range函數 108 6.5 循環控制語句 109 6.5.1 break語句 110 6.5.2 continue語句 111 6.5.3 goto語句 112 6.6 本課小結 113 6.7 本課練習 113 第7課 綜合練習:個稅計算器 118 7.1 準備工作 119 7.2 第一步:收集需求 119 7.2.1 使用的值 119 7.2.2 用戶界面 120 7.2.3 其他標準 120 7.3 第二步:設計程序 121 7.4 第三步:創建輸入 121 7.5 第四步:計算應稅收入 123 7.6 第五步:計算稅率 124 7.6.1 添加條件語句 126 7.6.2 創建嵌套條件 128 7.7 第六步:更新應用程序 134 7.7.1 如何處理負的應稅收入 136 7.7.2 核實代碼 137 7.8 第七步:完善用戶界面 138 7.9 自己動手實踐 140 7.10 本課小結 141 第II部分 用Go組織代碼和數據 第8課 使用函數 144 8.1 定義函數 144 8.1.1 使用多個函數 146 8.1.2 沒有返回值的函數 147 8.1.3 帶有多個返回值的函數 148 8.2 變長函數 152 8.3 遞歸 153 8.4 將函數作為值 154 8.5 閉包 155 8.6 本課小結 157 8.7 本課練習 157 第9課 訪問數組 160 9.1 聲明數組 161 9.1.1 給數組元素賦值 161 9.1.2 數組的基本規則 163 9.1.3 數組元素和變量的相似性 164 9.2 對數組進行聲明和初始化 166 9.3 推斷數組大小 167 9.4 使用for循環填充數組 168 9.5 在數組中使用range 169 9.6 創建多維數組 170 9.7 複製數組 171 9.8 比較數組 172 9.9 本課小結 174 9.10 本課練習 174 第10課 使用指針 177 10.1 創建指針 177 10.1.1 初始化指針 179 10.1.2 聲明和初始化指針 179 10.1.3 使用動態類型 180 10.1.4 不同類型的指針 181 10.2 通過指針訪問變量值 183 10.3 瞭解nil指針 184 10.4 使用指針改變變量值 185 10.5 比較指針 186 10.6 使用指針數組 187 10.7 在函數中使用指針 189 10.8 本課小結 191 10.9 本課練習 191 第11課 使用結構體 195 11.1 聲明和初始化結構體 195 11.1.1 從結構體中獲取值 197 11.1.2 在聲明結構體變量時對它進行初始化 198 11.1.3 使用短賦值運算符 198 11.2 在結構體中使用鍵值對 199 11.3 使用new關鍵字 201 11.4 指針和結構體 203 11.5 嵌套結構體 204 11.6 向結構體中添加方法 206 11.7 類型和值 208 11.8 對結構體進行比較 209 11.9 本課小結 211 11.10 本課練習 211 第12課 訪問切片 216 12.1 切片的工作原理 216 12.2 對數組進行切片 217 12.2.1 使用len和cap 219 12.2.2 使用快捷方式 220 12.3 改變切片的大小 221 12.4 對切片進行迭代 222 12.5 make函數 223 12.6 使用var創建切片變量 224 12.7 處理切片元素 225 12.7.1 替換切片中的元素 225 12.7.2 使用空切片 226 12.7.3 使用切片的部分元素 227 12.7.4 在切片中使用range 228 12.8 使用append函數向切片追加值 229 12.9 複製切片 230 12.10 使用new關鍵字創建切片 231 12.11 從切片中刪除元素 232 12.12 本課小結 234 12.13 本課練習 234 第13課 操作映射 237 13.1 定義映射 237 13.1.1 維護類型 239 13.1.2 重複的鍵 240 13.2 空映射 240 13.3 使用make創建映射 242 13.4 映射的長度 243 13.5 檢索映射元素 244 13.6 檢查映射中的鍵 245 13.7 遍歷映射 246 13.8 從映射中刪除元素 247 13.9 使用字面值聲明映射 249 13.10 本課小結 250 13.11 本課練習 250 第14課 創建方法 253 14.1 使用方法 253 14.2 定義方法 255 14.3 在方法中使用指針 256 14.4 命名方法 260 14.5 使用值接收器和參數 261 14.6 使用指針接收器和參數 263 14.7 本課小結 266 14.8 本課練習 266 第15課 添加接口 271 15.1 創建接口 271 15.2 接口和代碼可重用性 274 15.3 靜態和動態接口類型 275 15.4 空接口 277 15.5 檢查接口類型 277 15.6 多接口 279 15.7 嵌入式接口 282 15.8 本課小結 283 15.9 本課練習 284 第16課 綜合練習:漢堡店應用程序 286 16.1 應用程序需求 286 16.2 代碼設計 287 16.3 創建結構體 288 16.3.1 創建burger結構體 288 16.3.2 創建drink結構體 291 16.3.3 創建side結構體 293 16.3.4 創建combo結構體 295 16.3.5 創建order結構體 296 16.4 創建輔助函數 298 16.4.1 買漢堡 300 16.4.2 買配餐 301 16.4.3 買飲料 301 16.4.4 買套餐 302 16.5 整合代碼 303 16.6 本課小結 305 16.7 完整的漢堡店應用程序 306 第III部分 用Go創建解決方案 第17課 錯誤處理 314 17.1 Go程序中的錯誤 314 17.2 Go中的error類型 315 17.3 自定義錯誤處理 317 17.4 錯誤方法 318 17.5 Errorf函數 320 17.6 空標識符 321 17.7 用結構體表示錯誤消息 322 17.8 多個自定義錯誤消息 323 17.9 本課小結 326 17.10 本課練習 326 第18課 併發 328 18.1 使用併發 328 18.1.1 操作系統的角色 329 18.1.2 併發帶來的問題 330 18.1.3 互斥 331 18.2 並行 332 18.2.1 實現並行 333 18.2.2 防止由並行引發的問題 334 18.3 使用協程 334 18.4 多協程 336 18.5 使用通道 339 18.5.1 使用make創建通道 340 18.5.2 通道和併發 340 18.5.3 添加延遲 341 18.6 具有多個協程的通道 342 18.7 關閉通道 344 18.8 迭代通道 345 18.9 本課小結 347 18.10 本課練習 347 第19課 排序和數據處理 349 19.1 排序 349 19.1.1 檢查排序後的值 351 19.1.2 自定義排序函數 352 19.1.3 改變排序順序 354 19.2 時間和日期操作 355 19.2.1 定義時間 357 19.2.2 比較時間 358 19.2.3 時間計算 360 19.2.4 解析時間 366 19.2.5 使用UNIX時間 368 19.2.6 格式化標準時間 369 19.3 正則表達式 369 19.4 本課小結 372 19.5 本課練習 372 第20課 文件I/O和OS操作 377 20.1 讀取文件 377 20.1.1 panic函數 379 20.1.2 讀取文件的一部分 380 20.1.3 defer語句 382 20.1.4 從特定的起點讀取文件 382 20.1.5 緩衝讀取器 384 20.1.6 按行讀取文件 385 20.2 向文件寫入數據 387 20.2.1 創建新文件 388 20.2.2 緩衝寫入器 390 20.3 使用目錄 391 20.3.1 創建目錄 392 20.3.2 刪除目錄 393 20.3.3 創建目錄樹 393 20.3.4 列出目錄內容 394 20.3.5 更改目錄 395 20.3.6 臨時文件和臨時目錄 397 20.4 命令行參數 399 20.5 本課小結 400 20.6 本課練習 400 第21課 綜合練習:Go語言中的單詞分析 403 21.1 檢查數據 403 21.2 讀取評論數據 405 21.3 對輸入字符串進行分詞 413 21.3.1 識別標點符號並使用空格進行替換 414 21.3.2 將輸入文本轉換為小寫 415 21.3.3 將字符串分割為單詞 416 21.4 創建一個分詞函數 417 21.4.1 對評論內容進行分詞 418 21.4.2 對整個數據集進行分詞 419 21.5 對每條評論中的單詞進行計數 419 21.6 對評論進行分詞並計數 420 21.7 改進設計 423 21.7.1 改進1:優化結構體 423 21.7.2 改進2:添加自定義錯誤和異常處理 428 21.7.3 改進3:優化分詞 430 21.7.4 改進4:優化單詞計數 431 21.8 進一步的改進 433 21.9 最終代碼清單 433 21.10 本課小結 436 第IV部分 Go開發的高級主題 第22課 測試 438 22.1 測試驅動開發 438 22.2 測試級別 439 22.3 TDD工作流 440 22.3.1 TDD過程 440 22.3.2 TDD的優點 441 22.4 測試包 441 22.4.1 創建程序 442 22.4.2 編寫測試 442 22.4.3 運行測試 444 22.5 教程:測試驅動開發 445 22.5.1 第一個測試:美元金額的字符串表示 445 22.5.2 第二個測試:使用其他值進行測試 447 22.5.3 第三個測試:運算並輸出結果 450 22.5.4 對測試進行檢查 454 22.5.5 第四個測試:包含減法 456 22.5.6 最終測試:查看輸入值 459 22.6 行為驅動開發 462 22.6.1 行為驅動開發的目標 462 22.6.2 避免失敗 463 22.6.3 行為規範 464 22.6.4 定義用戶故事 465 22.7 本課小結 466 22.8 本課練習 466 第23課 API開發教程 467 23.1 概述和要求 467 23.2 第一步:創建數據集和一個簡單的API 468 23.2.1 定義數據集 469 23.2.2 homePage函數 469 23.2.3 返回處理程序 470 23.2.4 對傳入的請求進行處理和路由 470 23.2.5 添加數據 471 23.2.6 執行請求處理程序 472 23.2.7 運行程序 473 23.3 第二步:添加Gorilla Mux路由器 475 23.4 第三步:檢索記錄 478 23.4.1 檢索特定記錄 478 23.4.2 對更新進行測試 479 23.5 第四步:添加新記錄 481 23.6 第五步:刪除記錄 486 23.7 本課小結 490 23.8 本課練習 490 第24課 使用gRPC 492 24.1 使用gRPC 492 24.2 設置服務 493 24.2.1 Git 493 24.2.2 gRPC 494 24.2.3 Protobuf 494 24.2.4 protoc 495 24.2.5 用戶目錄 495 24.3 創建服務器 496 24.4 創建gRPC服務器 497 24.5 創建聊天服務 498 24.6 更新服務器代碼以添加聊天服務 499 24.7 創建chat包 500 24.8 創建客戶端 501 24.9 運行服務器和客戶端 503 24.10 本課小結 503 24.11 本課練習 504 第25課 綜合練習:使用智能數據 505 25.1 項目概要 505 25.2 設計我們的API 506 25.3 實現gRPC服務器 508 25.3.1 地理位置服務器外殼 509 25.3.2 金融服務器外殼 517 25.4 創建API 529 25.4.1 實現getGeoLocationData端點 531 25.4.2 實現getQuote端點 532 25.4.3 更新api.go文件 533 25.5 本課小結 537 第26課 使用模塊 538 26.1 開始使用模塊 538 26.2 第一步:創建項目目錄 538 26.3 第二步:創建程序 539 26.4 第三步:創建測試程序 540 26.5 第四步:創建go.mod文件 540 26.6 第五步:對模塊進行測試 541 26.7 第六步:使用模塊 541 26.8 命名模塊函數 541 26.9 本課小結 542 26.10 本課練習 542 附錄A 文件權限和訪問權限 544
Haythem Balti博士是Wiley Edge的副院長。他創建了許多門課程,供數千個軟件協會和Wiley Edge(前身為mthree)校友使用,以學習SQL、Go、Java、Python和其他編程語言及數據科學技能。 Kimberly A. Weiss是Wiley Edge課程運營的高級經理。她與多所大學以及企業培訓機構合作,針對軟件開發課程為學員設計成功的交互式教學案例。
客服公告
热门活动
订阅电子报