序
使用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常見類庫
引數校驗
測試增強
型別轉換
反射
序列化
資料結構增強
stream操作
依賴注入
微服務相關
總結
用go進行業務開發感覺成本還挺大,絕對不是省記憶體,雲原生這麼簡單的事情,如果是大公司,可以用錢去砸,我沒話說。中小公司如果自身團隊不是go背景,想從零開始,感覺成本還挺大,個人愚見。