iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0

在建構web-server時,我們有各種選擇,PHP,Nodejs,ASP......等等,那麼為何我們要使用go來建構webserver呢?

快速部署


在前面的章節提到,go的優點其中一項,就是編譯好binary後,可以快速部署到環境上,不像PHP需要先建置Apache,go只要該環境能執行binary,就可以執行部署。

    ./web-server start -e env.example

以上面所示,只要binary到達指定位置,下一句指令即可部署完成。
如果要放在背景執行則可以改用

   nohup ./web-server start -e env.example

程式碼檢查


使用go的另一個好處,就是在編譯時,會自動幫你檢查是否有錯誤,一般來說,使用VScode,phpstorm或是裝了檢查套件的vim,都有幫你檢查的功能,不過像是沒用到的參數或函數之類的,有時這些ide不會發現,如果就這樣編譯出來,雖然程式不會出錯,但是就會造成資源的浪費,這時go的檢查就可以幫你找出這些部分,並要求你修正,如果沒修正完成,他是不讓你編譯的。

# test/ithome
./main.go:18:6: test declared and not used

如上圖,我宣告一個test變數,但是沒使用它,編譯是不會通過的。

多平台支援


另一項go的特性就是多平台支援,在編譯go的binary時,會在專案目錄下一個指令

go build

這個指令就可以將你的專案編譯成可執行的binary,同時也會順便幫你檢查是否有程式碼的錯誤。

# test/ithome
./main.go:18:2: undefined: newTestJSON
./main.go:19:2: undefined: newTestJSON
./main.go:20:2: undefined: newTestJSON
./main.go:21:32: undefined: newTestJSON

而編譯不同平台的binary 主要是靠go env內有個GOOS的參數來決定,通常預設會是本機的OS
以我使用mac,GOOS就會是darwin,如果要改成build linux版本,只要改變GOOS的參數

export GOOS=linux

再下go build,這樣就可以編譯出別種平台的binary了,以此方式,就可以快速地部署在各種平台上,就不用再去調教該平台的環境。


上一篇
Day1-什麼是go
下一篇
Day3-架構說明之主程式
系列文
從0開始的golang web server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言