為什麼想學 Go

我想學習 Go 的初衷很簡單,就只是單純看到身邊有人在用 Go,看起來很好玩,所以我也想玩玩看。

不過我平常寫 Python,後端用 FastAPI,其他時間多半在寫 JavaScript,這兩個用起來都蠻順手,也沒什麼不滿。要多花時間學一個新語言,總得先想一下:值不值得?

先看關注度。下圖是 TIOBE 程式語言指數 (TIOBE Software BV, 2026),它用搜尋引擎裡各語言的查詢量來估算熱度。你可以切換時間範圍和座標,也可以只留自己在意的語言(語言標誌來自 Devicon contributors (n.d.)):

圖 1:主要程式語言的 TIOBE 指數走勢,2001 年 6 月至 2026 年 11 月

Go 這十年大多在 1% 到 3% 之間,2026 年 11 月是 1.69%,在這十個主流語言墊底;相較於 Go,Python 則是從 3.57% 一路爬到 20.86%。

那從職缺的角度看呢?根據英國 ITJobsWatch (IT Jobs Watch, 2026) 針對 IT 廣告中有提到 Go 的比例:

圖 2:英國 IT 職缺廣告中提到 Go 的占比(約略值)

正職在 2022 年初衝到約 3%,現在只剩約 0.45%。當然,這只是英國一個市場,參考就好。另外有個地方蠻有意思:提到 Go 的廣告裡,約 58.5% 同時要求 Python,所以 Go 比較像是和 Python 搭配的語言。

不過換個角度,Stack Overflow 的開發者調查裡,Go 的使用比例從 2021 年的 9.55% (Stack Overflow, 2021) 升到 2025 年的 16.4% (Stack Overflow, 2025)。

雖然 Go 不是最紅、主流的語言,但也沒有消失,對我而言值得花時間學習!

Go 是什麼

Go 是 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 在 2007 年 9 月 21 日於白板上開始構想的語言,2009 年 11 月 10 日開源 (The Go Project, n.d.)。

起因是他們對用當時的語言蓋大型專案感到挫折:程式和建置系統都太複雜,而且多核心處理器越來越普遍,多數語言卻幫不上什麼忙 (The Go Project, n.d.)。Pike 後來也提到,當時 Google 的伺服器多半是 C++,其他部分是 Java 和 Python,建置時間動輒數分鐘甚至數小時 (Pike, 2012)。官方對它的定義是:

Go is a compiled, concurrent, garbage-collected, statically typed language developed at Google.

— Rob Pike (Pike, 2012)

對寫 Python 的人來說,最直接的差別是編譯和靜態型別。Python 是直譯執行、型別到執行時才確定;Go 則是先編譯成執行檔,型別在編譯時就會檢查。而且預設是靜態連結,執行檔會把 Go 的 runtime 一起包進去 (The Go Project, n.d.),不需要像 Python 那樣先在機器上裝好直譯器。

至於設計取向,Pike 說得很老實:

…a language that is not a breakthrough research language but is nonetheless an excellent tool for engineering large software projects.

— Rob Pike (Pike, 2012)

學習計畫

我學習 Go 的目標很單純,希望可以把 Go 練到跟 Python 一樣熟,並且做出更快、更省資源的服務。

因此本系列將會分成四段:基礎語法、並行與 runtime、後端常用的框架和資料庫,最後做一個簡化的支付服務。

基礎進階後端專案入口:初步認識 Go入口:初步認識 Go環境與 Hello World環境與 Hello World型別與流程控制(還沒挖到)型別與流程控制函式(還沒挖到)函式slice 與 map(還沒挖到)slice 與 mapstruct 與 interface(還沒挖到)struct 與 interface錯誤處理(還沒挖到)錯誤處理goroutine 與 channel(還沒挖到)goroutine 與 channelsync 與 context(還沒挖到)sync 與 contextGMP 調度模型(還沒挖到)GMP 調度模型記憶體管理與 GC(還沒挖到)記憶體管理與 GC測試與 benchmark(還沒挖到)測試與 benchmark泛型與模組(還沒挖到)泛型與模組Gin 與 REST API(還沒挖到)Gin 與 REST APIPostgreSQL 與 GORM(還沒挖到)PostgreSQL 與 GORMRedis 與快取策略(還沒挖到)Redis 與快取策略gRPC 與 protobuf(還沒挖到)gRPC 與 protobufKafka 與 RabbitMQ(還沒挖到)Kafka 與 RabbitMQDynamoDB(補充)(還沒挖到)DynamoDB(補充)支付系統設計與冪等(還沒挖到)支付系統設計與冪等訂單、付款與帳務(還沒挖到)訂單、付款與帳務微服務拆分與通訊(還沒挖到)微服務拆分與通訊效能調優與壓測(還沒挖到)效能調優與壓測Docker 與 k8s(還沒挖到)Docker 與 k8s
圖 3:Go 筆記系列的學習路線1
1. 地鼠造型改作自 Renée French 設計的 Go gopher(CC BY 4.0)(Pike & Gerrand, 2014)。 ↩

參考文獻

Devicon contributors (n.d.). Devicon: Programming language and development tool icons (MIT License). Devicon. https://devicon.dev/

IT Jobs Watch (2026, November 11). Go (Golang). IT Jobs Watch. https://www.itjobswatch.co.uk/jobs/uk/go.do

Pike, R. (2012). Go at Google: Language Design in the Service of Software Engineering. The Go Programming Language. https://go.dev/talks/2012/splash.article

Pike, R., & Gerrand, A. (2014, March 24). The Go gopher. The Go Blog. https://go.dev/blog/gopher

Stack Overflow (2021). Stack Overflow Developer Survey 2021. Stack Overflow. https://survey.stackoverflow.co/2021

Stack Overflow (2025). Stack Overflow Developer Survey 2025: Technology. Stack Overflow. https://survey.stackoverflow.co/2025/technology

The Go Project (n.d.). Frequently Asked Questions (FAQ). The Go Programming Language. https://go.dev/doc/faq

TIOBE Software BV (2026, November). TIOBE Programming Community index. TIOBE. https://www.tiobe.com/tiobe-index/