Golang 學習筆記

Gopher

最近好不容易有空閒時間,所以抓緊時間開始研究 Golang 其實很早就聽說 Go 是屬於編譯式、靜態語言,效能比起之前我常用的 Ruby/JavaScript/Python 都快上許多,但是一直想嘗試寫一些什麼專案出來一直沒什麼機會,直到最近開始在玩 Messaging API 才開始著手寫看看,第一印象通常會覺得 Syntax 真的很醜、不好親近,但是當你熟悉之後,你會體驗到它的威力,尤其是在 Concurrency 開發上。

目前還是處於剛入門學習中,體驗還不到一週,發現到很多資源必須要把它記錄下來。


  1. 入門書推薦

強烈推薦這本電子書 The Little Go Book 僅僅84頁,把所有重點都講到了。

其次你可能會想再多看幾本短篇精要的書:

大部分的人都會推薦 The Go Programming Language (精通Go程式設計)個人覺得一開始就讀這本會比較難以接受,它寫的太仔細了,很容易看到沒耐性。

最後當你想要把語法精熟,再來看 The Go Programming Language (精通Go程式設計) 就不會感到那麼吃力。

2. Golang 語法簡介

除了官方的文件之外,我個人偏好 Go by Example 這個網站用非常短的範例簡短的介紹了 Go 的語法,對想要快速上手的人十分有幫助。

3. Gopher Academy GopherCon Talks 影片

Gopher Academy Youtube 上收錄了一些在 GopherCon 演講者的三十分鐘教學或介紹 Golang 短片,可以挑感興趣的主題或是熱門的來看。


進階學習

當你大致熟悉語法,會需要一些套件來配合你寫有趣的應用程式,這邊收錄我常用的套件跟教學資源。

  1. 網路程式開發

2. Cryptographic

3. A HTTP Client Example without third-party packages

4. Go Concurrency

大致上是有人原本對 goroutine 整理了一系列的用法,但是徹底的錯了。教學文在 Reddit 上被糾正,最後作者重新更新了教學。

5. Web Framework

至於有人可能會拿另一套 Iris 來比較,我強烈的不建議使用。
理由有二:
1. 它的效能確實不錯,但是它依賴第三方套件過於龐大,層層堆疊的積木,若有一個套件沒有維護,會是一個很大的隱憂。
2. 我認為這個作者太剛愎自用,因為它違反了開放源碼的規則,複製別人的 code 到自己的專案上使用,不引述 License 也不想承認,還到處宣戰,最後被人家排斥在外,詳情可以見 awesome-go 的作者將他的專案從清單中移除的理由。