golang, go language 又簡稱為 go,是由Google公司主導開發跟維護的程式語言。
現在成為了開源專案,並支援linux,macOS,window等平台。
目前已經有許多公司使用golang作為開發語言,像是Uber Twitch DropBox 當然還有Google公司本身。
變數在編譯時型態已經固定下來了,可以讓golang在編譯時更方便檢測錯誤。
golang在編譯時,會檢查程式碼內沒使用到的套件以及變數,如果有的話,就會讓編譯不通過。
golang有著強大的並發能力,可以運用goroutine跟channel來處理並發。
golang本身有著記憶體回收的功能,可以避免記憶體流失(Memory leak)的情況發生。並透過內部goroutine排程來回收記憶體。
其他還有像錯誤的處理 無子類繼承等等特性,由於太多了在這邊只舉上面幾個。
會使用go 代表它一定有某些優點存在,以下介紹一下他的優點:
效能跟java和C++相近 比python快30倍。
跟其他靜態語言相比,編譯速度極快,通常可以在30秒內編譯完,編譯完之後的binary也可以直接部署上機器。
由於編譯完的binary可以直接執行,給予其他公司執行時可以防止程式碼外洩,而編譯完成後的binary也無法反編譯。
go可以直接指定編譯成各種平台版本,像是window或debian,不用煩惱平台問題。
儘管go的功能強大,但他還是有些缺點存在:
沒有像是PHP的Laravel 或是 python的 Django之類的強大框架,對於簡單的程式也必須去找套件來使用。
go的錯誤必須自行處理,沒有像php的 try...catch之類的來處理, 有時沒有處理到的error可能會造成有些問題找不出源頭。
早期go的套件與版本控管一直被詬病,但是引入go mod後 有比較改善 但是變成要花時間成本去學習go mod的使用。