iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
2
Modern Web

從0開始的golang web server系列 第 1

Day1-什麼是go

golang? 狗鍊?

golang, go language 又簡稱為 go,是由Google公司主導開發跟維護的程式語言。
現在成為了開源專案,並支援linux,macOS,window等平台。
目前已經有許多公司使用golang作為開發語言,像是Uber Twitch DropBox 當然還有Google公司本身。

go的特性

1. 靜態性:

變數在編譯時型態已經固定下來了,可以讓golang在編譯時更方便檢測錯誤。

2. 編譯性:

golang在編譯時,會檢查程式碼內沒使用到的套件以及變數,如果有的話,就會讓編譯不通過。

3. 並發性:

golang有著強大的並發能力,可以運用goroutine跟channel來處理並發。

4. 記憶體回收(GC):

golang本身有著記憶體回收的功能,可以避免記憶體流失(Memory leak)的情況發生。並透過內部goroutine排程來回收記憶體。

其他還有像錯誤的處理 無子類繼承等等特性,由於太多了在這邊只舉上面幾個。

go的優點

會使用go 代表它一定有某些優點存在,以下介紹一下他的優點:

1. 效能極高:

效能跟java和C++相近 比python快30倍。

2. 快速編譯 部署:

跟其他靜態語言相比,編譯速度極快,通常可以在30秒內編譯完,編譯完之後的binary也可以直接部署上機器。

3. 程式碼保密性高:

由於編譯完的binary可以直接執行,給予其他公司執行時可以防止程式碼外洩,而編譯完成後的binary也無法反編譯。

4. 多平台編譯:

go可以直接指定編譯成各種平台版本,像是window或debian,不用煩惱平台問題。

go的缺點

儘管go的功能強大,但他還是有些缺點存在:

1. 沒有強大的框架:

沒有像是PHP的Laravel 或是 python的 Django之類的強大框架,對於簡單的程式也必須去找套件來使用。

2. 錯誤的處理:

go的錯誤必須自行處理,沒有像php的 try...catch之類的來處理, 有時沒有處理到的error可能會造成有些問題找不出源頭。

3. 套件的管理:

早期go的套件與版本控管一直被詬病,但是引入go mod後 有比較改善 但是變成要花時間成本去學習go mod的使用。


下一篇
Day2-選用go的原因與如何建立binary
系列文
從0開始的golang web server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言