2022 年 7 本最佳 Go 圖書

Go 圖書越來越多,有些不錯,有些不太好。我認爲如果你正在學習 Go,你應該儘可能廣泛地閱讀:即使是最好的 Go 圖書也只代表一種觀點。

但是,你必須知曉從哪裏開始,而且正如我的學生經常問 “我應該讀什麼 Go 圖書?”,我認爲將我的建議收集在一個地方可能會有所幫助。這裏我儘可能公正的描述,並說明可以從中學到什麼。

本文作者是 John Arundel,這裏提到的書中,有三本是本文作者寫的。

注意:以下圖書全部是國外的,雖然有些有中文翻譯。這裏不代表國人出版的 Go 圖書就不好。

1、適合初學者的最佳 Go 入門書

圖片

For the Love of Go[1] 適合沒有 Go 或一般編程經驗的人。本書循序漸進地方式介紹了 Go 中的測試驅動開發 (TDD)[2],並引導讀者完成開發完整 Go 包的過程,測試優先。

本書介紹了 Go 最重要的基礎知識:內置類型、結構、map 和切片,並展示瞭如何將它們用作真實世界應用程序(在線書店)的一部分。它涵蓋了基本的控制結構,如函數、循環和條件,通過簡單的階段轉到方法和指針,並引導讀者瞭解一些有用的模式,如驗證、未導出的類型和iota常量。

整本書有幾十個小挑戰幫助讀者練習他們剛剛學到的東西,包括完整的和經過測試的解決方案(也可以在 GitHub[3] 上找到)。

2、優秀的 Go 圖書(Best single-volume Go book)

圖片

這是一本爲有經驗開發者準備的 Go 圖書。如果你已經熟悉指針和併發等編程概念,並且想知道如何將這些知識轉化爲 Go,那麼這本書很適合你。

它基本上涵蓋了 Go 的各個方面,即使不總是很深入,也很詳細,雖然它不一定是我推薦學習 Go 的第一本書,但它是一個非常寶貴的參考資料。

3、最佳的中級 Go 圖書

圖片

The Power of Go: Tools[4] 是爲那些已經學會了 Go 基本知識,但現在想知道用它做什麼的讀者準備的。你如何設計包和 API?你如何測試不可測試的?好的軟件是什麼樣的?什麼是 Tao of Go[5],我們如何使用它?

本書以命令行工具爲重點,涵蓋了在 Go 中生成專業級軟件所需的一切:flag 和參數、文件和文件系統、命令、shell 和管道、JSON 和 YAML,甚至 API 客戶端。

最好的學習方式是邊做邊學,這本書裏有很多練習、測試和小項目供你學習。這本書固執己見,毫不妥協,但不過激,偶爾也很有趣,書中用簡潔的短語和經驗法則(“面向顯而易見的編程”)使課程令人難忘。

4、最佳的 Go 併發圖書

圖片

Concurrency in Go: Tools and Techniques for Developers[6],作者 Katherine Cox-Buday,對於任何使用 Go 編寫併發程序的人來說都是必不可少的讀物。這是一個高級主題,因此這本書不適合初學者,但它包含了有價值的信息、模式和實踐。

儘管 Go 對併發具有出色的內置支持,但它的運行水平非常低。實際上,構建正確、可靠和高性能的併發程序是一件大事,並且需要經驗和專業知識。作者大量提供了這些內容,概述了 Go 實現的理論 CSP 框架,並展示了它在實踐中的使用方式,並提供了許多詳細的示例和對幕後發生的事情的解釋。

這本書有中文翻譯版本:《Go 語言併發之道》。

5、最佳的特定應用 Go 圖書

圖片

Let's Go Further[7],由 Alex Edwards 撰寫,針對想要構建專業級 API 服務器的相當有經驗的 Go 開發人員。它本質上由一個大型且功能完整的演示應用程序組成,詳細解釋,逐行工作,逐個功能。

事實上,演示應用程序將大大有助於啓動和運行你自己的應用程序,並讓你遠離與規模、安全性或性能相關的任何重大問題。本書還涵蓋了商業開發人員需要了解的許多重要的非 Go 主題:數據庫、電子郵件、身份驗證、構建、部署等。

6、最佳的 Go 泛型圖書

圖片

Know Go: Generics[8] 是 Go 1.18+ 中新泛型特性的基本介紹。它用簡單的語言解釋了泛型函數和類型是什麼,我們爲什麼需要它們,以及它們在 Go 中是如何工作的。

這本書適合初學者和有經驗的程序員,對新特性和如何使用它們進行了全面的介紹,包括類型參數、約束、類型近似、泛型容器類型、新的slicesmaps包以及基於 MapReduceFilter 等的函數式編程。

本書展示了泛型在 Go 中的一些有趣應用,探討了語言變化將如何影響我們編寫程序的方式和熟悉的標準庫 API,並回答了一些關於泛型的最常見問題,例如 “使用泛型對性能有什麼影響?” 和 “我什麼時候應該使用泛型函數而不是接口?”

7、最佳的高級 Go 圖書

圖片

由 Bill Kennedy 和 Hoanh An 編寫的 Ultimate Go Notebook[9] 首次以書本形式展示了著名的 Ardan Labs Go 培訓大綱。除了涵蓋重要的 Go 主題(例如分析和跟蹤、錯誤處理和併發)外,本書還旨在教你像軟件工程師一樣思考。

對於那些可能有 2-3 年 Go 經驗的人來說,這是設計乾淨和可維護的軟件、優雅的 API 和 CRISP[10] 代碼的優秀課程。這一次,“終極” 標題並非誇張:很難想到書中遺漏的任何重要內容。每個 Gopher 都應該知道的模式和實踐的寶貴集合。

原文鏈接:https://bitfieldconsulting.com/golang/best-books

參考資料

[1]

For the Love of Go: https://bitfieldconsulting.com/books/love

[2]

測試驅動開發 (TDD): https://bitfieldconsulting.com/golang/tdd

[3]

GitHub: https://github.com/bitfield/ftl-code

[4]

The Power of Go: Tools: https://bitfieldconsulting.com/books/tools

[5]

Tao of Go: https://bitfieldconsulting.com/golang/tao-of-go

[6]

Concurrency in Go: Tools and Techniques for Developers: https://www.amazon.com/gp/product/1491941197?ie=UTF8&tag=cribbcorne-20&camp=1789&linkCode=xm2&creativeASIN=1491941197

[7]

Let's Go Further: https://lets-go-further.alexedwards.net/

[8]

Know Go: Generics: https://bitfieldconsulting.com/books/generics

[9]

Ultimate Go Notebook: https://courses.ardanlabs.com/courses/ultimate-go-notebook

[10]

CRISP: https://bitfieldconsulting.com/golang/crisp-code


本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/GYD3F2RrCGzLIBDnRCQCLQ