大家好,這是我生平第一次參加鐵人賽,想要透過比賽來強迫自己學習新的程式語言。我目前是一個C#後端工程師,平常在公司是寫.net core,因為最近對go很有興趣,剛好看到了鐵人賽這個機會,就決定給自己一個挑戰,希望可以在30天後學會go語言。
這一系列文章會參考官網教學Tour of Go,和徐波老師寫的 Go語言從入門到進階實戰 這本書,以及在之後文章中有引用其他網站之內容或範例的地方,我會再特別於文末註明參考來源。如果有人發現任何錯誤內容或是未註明參考的地方,請麻煩告訴我,小弟感激不敬。
A Tour of Go: https://tour.golang.org
Go語言從入門到進階實戰: https://www.books.com.tw/products/CN11547747
這裡列出一些關於Go的簡單介紹,有的是書中提到的,有的是維基百科寫的:
Go語言的原本名稱為go language,因此又稱golang,之後文章簡稱Go。
Go是由Google開發的一個靜態編譯程式語言,支援垃圾回收與併發。
Go於2009年11月正式宣布推出,成為開放原始碼專案,支援所有作業系統。
Go是C語言家族的新成員,風格與C語言相似,有"網路的C語言"的稱號。
Go的風格很像C語言,尤其是一樣用*表示指標,而Go也做了一些語法上的簡化及統一,使得程式在開發時更容易上手,以及更容易閱讀,以下是一些主要的差異:
每一行程式的結尾不需要分號 ( ; ) 。
大括號 { } 的左括號 { 不能換行寫。
for, if, switch條件式不需要小括號 ( )。
Go的特性與優點應該是已經被講到爛掉的東西,不外乎就是編譯快、效能高、容易部屬、語法簡單,及內建併發之類的,以下列出的是書上提到的特性及優點:
Go的開源項目越來越多,表示社群成長十分快速,對於語言本身來說也是一大優勢之一,因為可以降低學習與開發的門檻,以下列出幾個我知道的開源項目:
Golang: Go語言本身就是一個開源項目,原本是用C語言編寫,現在改以自身Go語言編寫。
Github: https://github.com/golang/go/
Docker: 近年來非常熱門的容器化技術開源軟體。
Github: https://github.com/docker
Kubernetes: 自動化部屬、擴展,及管理容器化應用程式的系統,支援docker。
Github: https://github.com/kubernetes/kubernetes
Gin: Go開源社群中星數最高的Web開發框架。
Github: https://github.com/gin-gonic/gin
Prometheus: 一個熱門的事件監控與警報系統。
Github: https://github.com/prometheus/prometheus