Go 學習手冊 第二版|寫出符合慣例的Go程式 (Learning Go: An Idiomatic Approach to Real-World Go Programming, 2/e)
Jon Bodner 著 賴屹民 譯
- 出版商: 歐萊禮
- 出版日期: 2025-06-24
- 定價: $920
- 售價: 7.9 折 $727
- 語言: 繁體中文
- 頁數: 520
- 裝訂: 平裝
- ISBN: 6263249943
- ISBN-13: 9786263249943
-
相關分類:
Go 程式語言、程式語言
- 此書翻譯自: Learning Go: An Idiomatic Approach to Real-World Go Programming, 2/e (Paperback)
尚未上市,歡迎預購
商品描述
🏆 來自業界專家推薦與讀者好評
「《Go 學習手冊》不但教你Go,還教你寫出符合慣例的Go程式。這本書對已經熟悉其他語言的程式設計師來說,是學習Go 的完美讀物。」
—Chris Hines,Comcast 資深首席軟體工程師
「Go是獨特的語言,即使是經驗豐富的程式設計師也必須捨棄一些既有的思維,並以不同的方式來思考軟體開發。這本書詳細介紹了這種語言的主要功能,並展示了它的慣用語法、陷阱,與設計模式。」
—Aaron Schlesinger,微軟資深工程師
「最棒的Go語言概覽!如果想學Go的精髓,想確保程式碼慣用且易懂,這本書最適合。」
「第一版已經很棒,第二版又更出色了!章節末的練習題讓學習更扎實。」
—Amazon讀者評論
「這本書教我如何寫出『像Go的Go程式碼』,解釋清晰,程式碼範例很實用。」
—Goodreads讀者評論
「最好的Go語言書!更現代,解釋更清楚,適合想快速上手的人。」
—Reddit使用者回饋
🚀新版升級!深度解析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的進階開發工具。
作者簡介
Jon Bodner 是Datadog的資深工程師,他負責簡化該公司APM產品的使用者上手過程。他也是 Proteus資料存取庫的創作者,具有超過25年的軟體工程師、首席開發者和架構師經驗。
目錄大綱
前言
第一章 設定你的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用於整合,而非提升效能
索引