go微服務開發工具箱

codecraft發表於2022-02-21

使用golang開發了一陣子業務程式碼,本文主要梳理一下自己的使用感受,並總結一下常用的類庫,方便查閱。由於本人是java重度使用者,不免加以對比吐槽一下,請見諒。

go做業務開發?

對比java這裡說說用go做業務開發的感受:

  • 優點

    • 雲原生首選,省記憶體
    • 挺適合寫指令碼的,可替代python
  • 缺點

    • 沒使用好會panic,線上服務直接程式退出還挺嚴重的
    • go沒有maven的SNAPSHOT版本,基於commit hash加日期作為偽版本,很容易出現invalid version,體驗非常不好,不像SNAPSHOT這麼省事
    • 寫物件導向比較費勁,每個方法都要寫個receiver,不像java這麼規整
    • ioc的支援不像java有ioc的標準,生態也不太行,比如uber/dig,都無法按name注入map結構
    • godoc太簡陋了,沒有javadoc那麼規整
    • 沒有註解和泛型(雖然新版支援了,但是要等周邊生態支援了才能好好用上),語言表達力弱了很多
    • 至於協程,業務開發貌似這個派不上用場
    • 包的機制挺怪的,預設以最後一個為準,很容易衝突,也不容易辨識,若是加上別名,那更是災難,非常不利於分析
    • 缺乏好用的test suite,不像java的juint,寫幾個註解就可以,挺費勁的

golang常見類庫

總結

用go進行業務開發感覺成本還挺大,絕對不是省記憶體,雲原生這麼簡單的事情,如果是大公司,可以用錢去砸,我沒話說。中小公司如果自身團隊不是go背景,想從零開始,感覺成本還挺大,個人愚見。

相關文章