完全自學!Go 語言 (Golang) 實戰聖經(中文書)

書名 完全自學!Go 語言 (Golang) 實戰聖經(中文書)
The Go Workshop: Learn to write clean, efficient code and build high-performance applications with Go
作者 Delio DAnna、Andrew Hayes、Sam Hennessy、Jeremy Leasor、Gobin Sougrakpam、Dániel Szabó
譯者 林班侯、施威銘研究室
出版社 旗標科技股份有限公司
出版日期 2021-07-08
ISBN 9789863126706
定價 880
特價 95折   836
庫存

訂購後,立即為您進貨
分類 中文書>電腦>程式語言

商品簡介

你從未見過如此完整的 Go 語言中文教材!

Go 語言
☛ 2016 年被 TIOBE 選為年度最佳程式語言
☛ 2020 年 Stack Overflow調查為 『全球第三高薪開發者職業』
☛ 2020 年超越 Python 成為『職業開發者最想學習語言』
☛ 已被 Google、Dropbox、Twitch、Uber 等企業採用,也用來打造 Docker、Kubernetes 等熱門開源工具

Go 語言,或者 『Golang』,是近年來成長最快速的新世代程式語言之一。它語法接近 C 及 Java,但藉由更精簡的語法來縮短開發時程、使專案能輕易擴張規模,並具備安全的靜態型別、記憶體垃圾回收、跨平台編譯能力等。連 Python 之父 Guido van Rossum 都說, Go『是所有新語言中最具 Python 風格的』...

最重要地,Go 語言擁有豐富程度堪比 Python 的內建函式庫,無須下載額外套件,就能用少於 10 行程式寫出簡易 HTTP 伺服端應用!甚至,它獨特的 Goroutine 讓你能用簡單得稱奇的方式啟用非同步運算,超輕鬆解鎖現代多核心電腦的運算威力。

想跨足 Go 語言,讓履歷及薪水更上一層樓,卻依舊找不到合適的入門書嗎?本書以豐富的範例及練習,帶領讀者實地操作 Go 語言的基礎及相關特色,讀完就能立馬投入實戰。替自己的職涯超前佈署,快速增加一技之長,別再只能對現況『滾動式修正』啦!
本書特色:
作者群擁有豐富的 Go 語言開發經驗,精心設計了「範例」、「練習」和「延伸習題」,讓讀者從實作中親自體會到 Go 語言的威力。小編也在書中適當加入「編註」與「補充」,以幫助理解及補充必要知識,更增添本書的可讀性。

你將在本書讀到:

☛ Go 語言的型別、函式、結構與介面
☛ 模組管理和單元測試
☛ JSON 資料、檔案、資料庫操作
☛ HTTP 客戶端/伺服器應用和加密
☛ 非同步運算
☛ 附全書 258 個範例/練習程式及 36 個延伸習題檔案下載 (使用 Go 1.16+ )
客服 02-2570-1233 | 會員服務使用條款 | 隱私權政策
PC版 TAAZE | Mobile版 TAAZE
Power By 學思行數位行銷股份有限公司

完全自學!Go 語言 (Golang) 實戰聖經

作者簡介

Delio D'Anna 現任 Cognitiv+ 的機器學習工程師, 專長為分散式系統架構, 有三年 Go 語言開發經驗。Andrew Hayes 現任 CI/CD 平台 Harness 主管工程師, 有三年 Go 語言開發資歷,工作過的產業類型包括儲存設備、網路、DevOps 和雲端。Sam Hennessy 從 2015 年起轉為全職 Go 語言工程師, 替新創企業、政府機構和大企業工作過, 也擔任包括 Go 語言在內的講師。現任日本 WealthPark Co., Ltd. 不動產公司的後端經理。Jeremy Leasor 現任資安公司 Aronis SCS 的 Go 語言工程師, 擁有超過 20 年 IT 資歷, 包括 4 年以上的 Go 語言經驗, 發展安全性與資料庫方面的應用。Gobin Sougrakpam 從系統整合工程師起家, 目前是 Go 程式設計師, 替 VMWare 和 AMS 等平台建置自動化方案。現任資訊服務管理公司 ServiceNow 資深工程師。Dániel Erno Szabó 現任水電管理企業 Itron, Inc. 的 DevOps 工程師, 是個 IT 迷, 熱愛 Go、Python、Ruby 和 C# 等多種語言。

章節目錄

▶ 閱讀本書前的準備本書的表達習慣安裝 Go 語言安裝 Visual Studio Code 編輯器建立和執行專案The Go Playground本書執行專案的慣例從 VS Code 執行執行 Go 程式下載本書附錄、範例程式並開啟工作區▶ Chapter 1 變數與算符1-1 前言1-1-1 Go 語言簡介1-1-2 Go 語言的模樣1-2 宣告變數 (variables)1-2-1 用 var 宣告變數1-2-2 用 var 一次宣告多個變數1-2-3 用 var 宣告變數時省略型別或賦值1-2-4 推斷型別發生問題的時候1-2-5 短變數宣告1-2-6 以短變數宣告建立多重變數1-2-7 在單行程式內用 var 宣告多重變數1-2-8 非英語的變數名稱1-3 更改變數值1-3-1 更改單一變數的值1-3-2 一次更改多個變數值1-4 算符 (operators)1-4-1 算符基礎1-4-2 算符簡寫法1-4-3 值的比較1-5 零值 (zero values)1-6 值 vs. 指標 (pointers)1-6-1 了解指標1-6-2 取得指標1-6-3 從指標取得值1-6-4 採用指標的函式設計1-7 常數 (constants)1-8 列舉 (enums)1-9 變數作用範圍 (Scope)1-10 本章回顧▶ Chapter 2 條件判斷與迴圈2-1 前言2-2 if 敘述2-2-1 if 敘述基礎2-2-2 else 敘述2-2-3 else if 敘述2-2-4 if 敘述的起始賦值2-3 switch 敘述2-3-1 switch 敘述基礎2-3-2 switch 的不同用法2-4 迴圈2-4-1 for 迴圈基礎2-4-2 for i 迴圈2-4-3 for range 迴圈2-4-4 break 和 continue 敘述2-5 本章回顧▶ Chapter 3 核心型別3-1 前言3-2 布林值:true/false3-3 數字3-3-1 整數3-3-2 浮點數3-3-3 溢位和越界繞回3-3-4 大數值3-3-5 位元組 (Byte)3-4 字串 (String)3-4-1 字串與字串常值3-4-2 Rune3-5 nil 值3-6 本章回顧▶ Chapter 4 複合型別4-1 前言4-2 集合型別 (collection types)4-3 陣列 (array)4-3-1 定義一個陣列4-3-2 陣列的比較4-3-3 透過索引鍵賦值4-3-4 讀取陣列元素值4-3-5 寫入值到陣列4-3-6 走訪一個陣列4-4 切片 (slice)4-4-1 使用切片4-4-2 為切片附加多重元素4-4-3 從切片和陣列建立新的切片4-4-4 了解切片的內部運作4-4-5 切片的隱藏陣列置換4-5 映射表 (map)4-5-1 map 的基礎4-5-2 從 map 讀取元素4-5-3 從 map 刪除元素4-6 簡易自訂型別 (custom types)4-7 結構 (struct)4-7-1 結構的定義4-7-2 結構的相互比較4-7-3 內嵌結構4-7-4 替自訂型別加上方法 (method)4-8 介面與型別檢查4-8-1 型別轉換4-8-2 型別斷言與 interface{} 空介面4-8-3 型別 switch4-9 本章回顧▶ Chapter 5 函式5-1 前言5-2 函式5-2-1 函式的宣告和組成5-2-2 函式參數5-2-3 函式傳回值5-2-4 Naked Returns5-3 參數不定函式5-4 匿名函式與閉包5-4-1 宣告匿名函式5-4-2 建立閉包5-5 以函式為型別的參數5-5-1 自訂函式型別5-5-2 使用自訂函式型別的參數5-5-3 用自訂函式型別作為傳回值5-6 defer5-6-1 用 defer 延後函式執行5-6-2 多重 defer 的執行順序5-6-3 defer 對變數值的副作用5-7 摘要▶ Chapter 6 錯誤處理6-1 前言6-2 程式錯誤的類型6-2-1 語法錯誤6-2-2 執行期間錯誤6-2-3 邏輯錯誤/語意錯誤6-3 其它程式語言的錯誤處理方式6-4 error 介面6-4-1 Go 語言的 error 值6-4-2 error 型別定義6-4-3 建立 error 值6-4-4 (小編補充) 使用 fmt.Errorf() 建立 error 值6-5 panic6-5-1 何謂 panic?6-5-2 panic() 函式6-6 recover (復原)6-7 處理 error 與 panic 的指導方針6-8 本章回顧.6-31▶ Chapter 7 介面7-1 前言7-2 介面 (interface)7-2-1 認識介面7-2-2 定義介面型別7-2-3 實作一個介面7-2-4 隱性介面實作的優點7-3 鴨子定型和多型7-3-1 鴨子定型7-3-2 多型7-4 在函式中活用介面7-4-1 以介面為參數的函式7-4-2 以介面為傳回值的函式7-4-3 空介面 interfac{}7-4-4 型別斷言與型別 switch7-5 本章回顧▶ Chapter 8 套件8-1 前言8-1-1 何謂套件8-1-2 運用套件的好處8-2 使用套件8-2-1 何謂套件8-2-2 套件的命名8-2-3 套件的宣告8-2-4 將套件的功能匯出8-3 管理套件8-3-1 GOROOT8-3-2 GOPATH8-3-4 Go Modules ★ Go 1.16+ 的預設套件管理方法8-3-5 下載第三方模組或套件8-4 套件的呼叫與執行8-4-1 套件別名8-4-2 init() 函式8-5 本章回顧▶ Chapter 9 程式除錯:格式化訊息、日誌與單元測試9-1 前言9-1-1 臭蟲的發生原因9-1-2 除錯原則9-2 以 fmt 套件做格式化輸出9-2-1 fmt 套件9-2-2 fmt 的格式化輸出9-2-3 印出浮點數的進階格式化9-2-4 用 strconv.FormatFloat() 格式化浮點數9-3 使用 log 提供追蹤訊息/日誌9-3-1 印出追蹤訊息9-3-2 用 log 套件輸出日誌9-3-3 建立自訂 logger 物件9-4 撰寫單元測試9-5 本章回顧▶ Chapter 10 時間處理10-1 前言10-2 建立時間資料10-2-1 取得系統時間10-2-2 取得時間資料中的特定項目10-3 時間值的格式化10-3-1 將時間轉成指定格式的字串10-3-2 將特定格式的時間字串轉成時間值10-4 時間值的管理10-4-1 建立和增減時間值10-4-2 設定時區來取得新時間值10-5 時間值的比較與時間長度處理10-5-1 比較時間10-5-2 用時間長度來改變時間10-5-3 測量時間長度10-6 本章回顧▶ Chapter 11 編碼/解碼 JSON 資料11-1 前言11-2 解碼 JSON 為 Go 結構11-2-1 Unmarshal()11-2-2 加上結構 JSON 標籤11-2-3 解碼 JSON 到複合結構11-3 將 Go 結構編碼為 JSON11-3-1 Marshal()11-3-2 將有多重欄位的結構轉為 JSON11-3-3 略過欄位11-3-4 有排版的 JSON 編碼結果11-4 使用 Decoder/Encoder 處理 JSON 資料11-5 處理內容未知的 JSON 資料11-5-1 將 JSON 格式解碼成 map11-5-2 將 map 編碼成 JSON 格式11-6 gob:Go 自有的編碼格式11-7 本章回顧▶ Chapter 12 系統與檔案12-1 前言12-2 命令列旗標與其引數12-3 系統中斷訊號12-4 檔案存取權限12-5 建立與寫入檔案12-5-1 用 os 套件新建檔案12-5-2 對檔案寫入字串12-5-3 一次完成建立檔案及寫入12-5-4 檢查檔案是否存在12-5-5 一次讀取整個檔案內容12-5-6 一次讀取檔案中的一行字串12-5-7 刪除檔案12-6 最完整的檔案開啟與建立功能:os.OpenFile()12-7 處理 CSV 格式檔案12-7-1 走訪 CSV 檔內容12-7-2 讀取每行資料各欄位的值12-6 本章回顧▶ Chapter SQL 13 與資料庫13-1 前言13-2 安裝 MySQL 資料庫13-2-1 安裝 MySQL Server13-2-2 新增資料庫使用者13-2-3 建立一個 MySQL 資料庫13-2-4 下載 Go 語言的 MySQL 驅動程式13-3 以 Go 語言連接資料庫13-4 建立、清空和移除資料表13-5 插入資料13-6 查詢資料13-6-1 查詢並印出整個資料表內容13-6-2 查詢符合條件的資料13-7 更新既有資料13-8 練習:FizzBuzz 統計表13-9 本章回顧▶ Chapter 14 使用 Go 的 HTTP 客戶端14-1 前言14-2 Go 語言的 HTTP 客戶端14-3 對伺服器傳送 GET 請求14-3-1 使用 http.Get() 發送 GET 請求14-3-2 取得並解析伺服器的 JSON 資料14-4 用 POST 請求傳送資料給伺服器14-4-1 送出 POST 請求並接收回應14-4-2 用 POST 請求上傳檔案14-5 在客戶端使用自訂標頭做為請求選項14-6 本章回顧▶ Chapter 15 建立 HTTP 伺服器程式15-1 前言15-2 打造最基本的伺服器15-2-1 使用 HTTP 請求處理器 (handler)15-2-2 簡單的 routing (路由) 控制15-2-3 修改程式來應付多重路徑請求15-3 解讀網址參數來動態產生網頁15-4 使用模板產生網頁15-5 使用靜態網頁資源15-5-1 讀取靜態 HTML 網頁15-5-2 在伺服器上提供多重靜態資源15-5-3 使用模板檔案產生動態網頁15-6 用表單和 POST 方法更新伺服器資料15-7 簡易 RESTful API:交換 JSON 資料15-8 本章回顧▶ Chapter 16 並行性運算16-1 前言16-2 使用 Go 語言的並行性運算16-2-1 Goroutine16-2-2 WaitGroup16-3 解決記憶體資源競爭 (race condition)16-3-1 原子操作 (atomic operation)16-3-2 互斥鎖 (mutex)16-4 通道 (channel)16-4-1 使用通道傳遞訊息16-4-2 從通道讀取多重來源的資料16-5 並行性運算的流程控制16-5-1 通道緩衝區與通道關閉:close()16-5-2 使用通道訊息來等待 Goroutine 結束16-5-3 使用通道傳送取消信號16-5-4 使用函式來產生通道及 Goroutine16-5-5 限制通道的收發方向16-5-6 將結構方法當成 Goroutine16-6 context 套件16-7 本章回顧▶ Chapter 17 運用 Go 語言工具17-1 前言17-2 go build 工具:編譯可執行檔17-2-1 使用 go build17-2-2 編譯條件:選擇要編譯的檔案★ 如何針對跨平台編譯17.3 go run 工具:執行程式17-3 gofmt 工具:程式碼格式化★ 小編補充:Go 語言伺服器 gopls17-4 go vet:程式靜態分析工具★ 小編補充:Go 語言風格檢查工具:golint17-5 go doc 工具:產生文件17-6 go get 工具;下載模組或套件17-7 本章回顧▶ Chapter 18 加密安全18-1 前言18-2 雜湊函式 ★ 使用 MD5 和 SHA2/SHA318-3 加密法18-3-1 對稱式加密法 ★ 使用 AES + GCM18-3-2 非對稱式加密法 ★ 使用 RSA-OAEP18-4 數位簽章 ★ 使用 Ed2551918-5 HTTPS/TLS 與 X.509 憑證★ 給客戶端和伺服器使用自簽署憑證★ 改用 ECDSA 簽章演算法18-6 本章回顧▶ Chapter 19 Go 語言的特殊套件:reflect 與 unsafe19-1 反射 (reflection)19-1-1 TypeOf() 和 ValueOf()19-1-2 取得指標值和修改之19-1-3 取得結構的欄位名稱、型別與其值19-1-4 練習:用 reflect 取代介面斷言19-1-5 DeepEqual19-2 unsafe 套件19-2-1 unsafe.Pointer 指標19-2-2 以 uintptr 搭配 unsafe 存取記憶體位址19-2-3 Go 語言標準套件中的 unsafe19-3 本章回顧▶ 附錄 延伸習題
客服 02-2570-1233 | 會員服務使用條款 | 隱私權政策
PC版 TAAZE | Mobile版 TAAZE
Power By 學思行數位行銷股份有限公司