在網路上看到這篇『5 Reasons Why We switched from Python To Go』,先發到自己 Facebook 牆上,引發討論,乾脆整理一篇 Blog 來寫自己的感想,底下五大理由讓該篇作者從 Python 轉到 Go 語言。我會針對前四點來寫心得
- 編譯二進制檔案 (加速部署及跨平台)
- 編譯自動檢查 Static 型態 (你不會把 string 欄位帶入 Integer)
- 效能 (Go 並發跟 Python thread 比起來節省許多資源)
- 不需要 web framework (Go 內建大多數 Library 像是 HTTP, JSON, HTML templating)
- 好用的 IDE (內文提到 Webstorm, PHPStorm) 我推薦用 VSCode
1. It Compiles Into Single Binary
由於現在 Web Application 技術越來越先進,所以造成 CI/CD 流程相對複雜,所以每次只要 commit code,部署 + 測試時間相當久,在 Go 語言可以把前端 Source Code 整個包進去 Go Binary,所以 Production 機器根本不需要安裝任何 Package 就可以進行部署,這省下的時間對於大團隊而言是很可觀的。在 Go 語言只需要一個指令,就可以直接 build 出 binary file (不管是 ARM, Linux, MacOS, Windows) 32 bit or 64 bit$ GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o hello package $ GOOS=linux GOARCH=arm CGO_ENABLED=0 go build -o hello package $ GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -o hello package $ GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -o hello.exe package
2. Static Type System
這點對團隊來說非常重要,每個人寫 Code 的品質真的差異極大,所以每次寫 Function Test 都要寫如果變數帶數字 1 或字串 1,都要寫測試,在函示內也要進行轉換,免的程式出錯,這點解決了大部份工程師會犯錯的問題,並不是每個工程師寫 Code 都會使用!==
或 ===