Golang使用感受

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

Golang使用感受

說白了一門語言對你造成重大影響的就四個東西:效能,行數,易理解度,坑的多寡深淺(包括網上的相關資料和第三方類庫)。

效能方面
Go 的效能基本上只輸 C 家族,最壞情況也就慢幾倍(不像某些流行語言慢幾十上百倍),就算用來實現對效能要求苛刻的演算法也算不上浪費 CPU。但如果看廣義的效能,把並發算進去,還是比較爽的。像 Ruby / Python 這類被 GIL 束縛手腳的語言就不說了,而相比那些直接作業系統級線程/進程的語言來說,速度優勢就很明顯。當然,很多語言也可以包一個輕量級線程的實現,但問題就出在這裡,他們官方沒做這個事情,這種命根子需求使用第三方庫會帶來很多隱患。

行數方面
這是 Go 的小劣勢,總體表現力不如 Ruby / Python / Scala / 各種 FP。其中矬爆九天、蛋菊俱焚的一點是:它沒有泛型,以至於一個最簡單的數組的 reverse 都得給每個類型實現一次。有人可能會說,用 interface{} 或者 reflect 什麼的也可以,但從此程式的穩定性會走向不歸路。但無論如何,它比 C 家族代碼要短,如果能靈活運用閉包、defer,可以省不少事情。另外如果是並發邏輯比較複雜的情境,把 chan、select 用好,代碼可以比任何語言都短。

易理解度
跟大多數語言區別不明顯。但我最近讀了一些 C 家族的代碼,已經覺得有點不習慣了。我發現 C 家族的代碼有很大一部分是浪費在語言本身的破事上,Java 也好不到哪裡去。這麼一說 Go 還是應該算中上水平。


目前我司在使用 Go 遇到的所有坑在網上都比較容易找到解決方案。官方文檔齊全,源碼也精簡易懂。第三方的東西不算多,但比起像 nodejs 那些稀巴爛的第三方庫品質好太多。有一點值得注意的是,我司沒有專門測試的員工,但 Go 實現的服務 bug 很少,基本上 bug 都是對業務理解的問題(或是偷懶啥的)所導致,而且 bug 出現之後對服務的影響都能被控制在一個範圍裡,這是一件很好的事情。不會像以前寫 C 家族時候出現指標亂飛、記憶體寫亂的狀況,也沒有 Python 同事經常出現的變數名 typo 問題(你見過幾個人愛用靜態檢查工具?),換句話說,Go 的程式健壯程度跟 Java 系列相仿。

印象比較深刻的就這些。對於我來說,如果 Go 把泛型補上就比較完美了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.