詳細資訊
【簡介】 新版升級!深度解析Go泛型與實務練習,打造符合慣例的高效Go程式! 改版全面擴充升級: ✔內容升級,涵蓋Go語言近年重大變革與實務進展。 ✔深入解析Go泛型(Generics),從語法到實應用完整整合,掌握現代Go必備技能。 ✔強化實務開發與效能調校技巧,深入工具鏈、專案架構、團隊協作實務。 ✔融匯設計理念與最佳實踐,理解Go思維,寫出絕佳的GO程式。 ✔新增章後練習題,吸收→練習→內化,學習效果更有感。 Go語言迅速成為設計web服務的首選語言。市面上有許多教學資源,為具備其他程式語言經驗的開發者講解Go的語法,但那些課程仍然不夠全面,通常不會教導Go語言的慣用寫法,導致開發者在Go的環境中反覆使用不合適的模式。這本實用的指南將提供所需的基本知識,協助你寫出清晰且符合Go語言慣例的程式碼。 無論您是新手還是具備經驗的開發者,都能學會如何以Go開發者的思維進行程式設計。作者Jon Bodner介紹了許多資深Go開發者所採用的設計模式,並深入探討使用這些模式的理由及其背後的邏輯。在本次全新改版中也會展示Go語言的泛型功能,及其如何融入整體語言架構中。 本書將協助你: •寫出符合慣例的Go程式碼,並設計Go專案。 •瞭解Go語言的設計決策背後的理由。 •為個人開發者或開發團隊設置Go語言開發環境。 •學習如何使用reflection、unsafe與cgo,及其使用時機。 •明白Go的功能如何讓這種語言高效運行。 •知道哪些功能應盡量少用,甚至完全避免。 •改善效能、將記憶體的使用量最佳化,以及減少記憶體回收次數。 •瞭解如何使用Go的進階開發工具。 讀者好評 來自業界專家推薦與讀者好評 「《Go 學習手冊》不但教你Go,還教你寫出符合慣例的Go程式。這本書對已經熟悉其他語言的程式設計師來說,是學習Go 的完美讀物。」 —Chris Hines,Comcast 資深首席軟體工程師 「Go是獨特的語言,即使是經驗豐富的程式設計師也必須捨棄一些既有的思維,並以不同的方式來思考軟體開發。這本書詳細介紹了這種語言的主要功能,並展示了它的慣用語法、陷阱,與設計模式。」 —Aaron Schlesinger,微軟資深工程師 「最棒的Go語言概覽!如果想學Go的精髓,想確保程式碼慣用且易懂,這本書最適合。」 「第一版已經很棒,第二版又更出色了!章節末的練習題讓學習更扎實。」 —Amazon讀者評論 「這本書教我如何寫出『像Go的Go程式碼』,解釋清晰,程式碼範例很實用。」 —Goodreads讀者評論 「最好的Go語言書!更現代,解釋更清楚,適合想快速上手的人。」 —Reddit使用者回饋 【目錄】 前言 第一章 設定你的Go環境 安裝Go工具 你的第一個Go程式 選擇你的工具 Makefiles Go Compatibility Promise 保持最新狀態 第二章 預宣告型態,及宣告 預宣告型態 var vs. := 使用const typed與untyped常數 未使用的變數 為變數和常數命名 第三章 複合型態 陣列— 太僵化,無法直接使用 slice 字串與rune與byte map struct 第四章 區塊、遮蔽,與控制結構 區塊 遮蔽變數 if 四種for switch goto—你沒看錯,正是goto 第五章 函式 宣告與呼叫函式 函式是值 closure defer Go是以值呼叫的 第六章 指標 指標快速入門 別怕指標 指標代表可變參數 指標是最終手段 指標傳遞效能 零值vs.無值 map與slice之間的區別 將slice當成緩衝區 減少記憶體回收程序的工作負擔 調整記憶體回收程序 第七章 型態、方法,與介面 Go的型態 方法 iota用於列舉⋯有時啦! 用內嵌來組合 內嵌並非繼承 介面快速入門 介面是型態安全的鴨子定型 內嵌與介面 接收介面,回傳struct 介面與nil 介面是可比較的 空介面沒有任何意義 型態斷定與型態切換 謹慎使用型態斷定和typeswitch 函式型態是通往介面的橋樑 隱性介面可讓依賴注入更方便進行 Wire Go不太物件導向(這是很棒的事情) 第八章 泛型 泛型可減少重複的程式碼,並提高型態安全性 Go泛型簡介 泛型函式抽象演算法 泛型與介面 使用型態項來指定運算子 型態推斷與泛型 用型態元素來限制常數 結合泛型函式與泛型資料結構 關於comparable的其他事項 被排除的功能 符合慣例的Go與泛型 在標準程式庫中加入泛型 未來解鎖的功能 第九章 錯誤 如何處理錯誤:基本知識 用字串來指出簡單的錯誤 哨符錯誤 error是值 包裝錯誤 包裝多個錯誤 Is與As 用defer來包裝error panic與recover 從error取得堆疊追蹤 第十章 模組、套件,與匯入 版本庫、模組,與套件 使用go.mod 建立套件 使用模組 發布你的模組 控制模組的版本 模組代理伺服器 第十一章 Go工具 使用go run來試驗小型程式 使用go install來加入第三方工具 使用goimports來改善匯入格式 使用程式碼品質掃描器 使用govulncheck來掃描有漏洞的依賴項目 將內容嵌入你的程式 嵌入隱藏檔案 使用go generate 使用go generate和Makefile 讀取Go二進制檔案中的組建資訊 為其他平台組建Go二進制檔 使用組建標籤 測試不同版本的Go 使用gohelp來進一步瞭解Go工具 第十二章 Go的並行 使用並行的時機 goroutine channel select 並行實踐法與模式 何時該使用mutex,而不是channel 原子變數—你應該不需要它們 進一步瞭解並行 第十三章 標準程式庫 io與朋友 time encoding/json net/http 結構化的日誌記錄 第十四章 context 什麼是context? 值 取消 帶有最終期限的context 在你自己的程式中處理context取消 第十五章 編寫測試程式 測試的基本知識 執行表格測試 並行執行測試 檢查代碼覆蓋率 模糊測試(Fuzzing) 使用效能評測 使用Go的stub 使用httptest 使用整合測試與組建標籤 使用資料競態檢查器來尋找並行問題 第十六章 惡龍禁地:Reflect、Unsafe與Cgo reflection可讓你在執行期使用型態 unsafe不安全 cgo用於整合,而非提升效能 索引