這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。【編者按】Go語言自從面世就受到了很多開發人員的歡迎,越來越多的項目基於Go語言實現,例如非常著名的雲端運算項目Docker。而本文作者分享了其從Node.js轉到Go語言後,整個開發平台的效能得到顯著提升,並從中總結出Go的六大亮點。
以下為譯文:
Bowery是一個雲端式技術的開發平台,強大的協同處理技術讓即使分散各地的團隊成員都能無縫地進行工作。在2014年進行的一次由Node.js轉到Go的變更中,Bowery獲得了不錯的效能提升。那麼Go有哪些亮點值得開發人員關注的呢?
強大的跨平台編程能力
Bowery團隊指出Go能很方便地在不同系統裡進行程式編譯,這是他們轉入Go的重要原因之一。
作為開發平台,對Linux,Windows,OSX等常見作業系統提供支援是能否吸引開發人員的基本要素。在Go中,開發人員可以針對不同作業系統定義不同的檔案來實現相同的功能函數。Bowery團隊成員Larz在建立Prompt應用(命令列輸入)時,就是藉助Go而輕鬆實現了跨平台編譯。而開發人員要做的,就是設定好不同的環境變數。
快速部署
在Go平台中,從測試環境到真實環境的切換是非常便捷的,因為它無需額外的系統依賴。特別是對於Bowery提供給使用者的命令列工具來說,使用者無需安裝Java,RVM或者NPM等工具便可正常運行。
並發處理
Node.js在並發處理方面處於劣勢,僅有I/O程式或計時器運行在併發模式。因此如果希望打造一個快速響應的跨程式通訊系統,Go無疑是更好的選擇。Go提供了低層級的並發處理基元,例如mutexes、wait groups等等。
整合測試架構
如果希望找到一個標準化的整合測試架構,不妨進入Go來體驗一番,它內建了完整的測試包,免去了四處尋找的麻煩。如果想編寫一個新的測試套件,只要把_test.go檔案添加到相同的包裡就可以了。有關Go測試的更多資訊,請點擊這裡進行訪問。
標準庫
Go提供了標準庫,標準庫的好處是無需包含其他擴充庫,從而能節省開發時間並且還提高了健壯性。
強大的開發人員工作流程工具
Go的工作區介面能協助建立標準化的工作流程,雖然這或許會壓縮了開發的自由度,但得到的是一個結構化的有條理的工作區:該區有三個根目錄,src用於放置源碼包,pkg用於放置編譯包,bin放置的是執行檔案。把源碼和依賴檔案集中儲存的好處是使團隊成員都有一個相同的文檔結構,而不會出現雜亂的文檔情況。此外gofmt能以相同風格對代碼進行格式化,這是一個非常實用的功能。所以一旦需要進行調試,只需集中精力解決當前問題而無需分心處理結構或風格等瑣碎問題。
最後總結幾點Go語言學習心得,希望對新接觸Go語言的開發人員有所協助:
- 經常訪問官方部落格,擷取最新Go資訊;
- 經常訪問官方教學文檔;
- 建議瀏覽Ardan工作室成員Bill Kennedy的Go編程部落格;
- Go by Example上有大量的執行個體,能協助開拓視野;
- GopherAcademy有很多有關Go最佳實務的文章。
英文來自:Moving from Node.js to Go at Bowery