簡述GoLang優勢與生態


開門見山,一睹golang的風采

  1. 性能優勢
  2. 部署運維成本低
  3. 編碼格式統一;測試簡單

1. 性能優勢

Go 語言被稱為是:"21世紀的C語言",雖然這個帽子戴的有點高,不妨這里給大家解讀一下,其實這句話有兩層含義:

第一層含義是: Go 語言的語法和C語言類似,如果你會C語言,上手會很快。但如果你不會C語言,其實也不用擔心,比起C語言, Go 語言上手其實很簡單。

第二層含義是: Go 語言的性能, Go 語言內置強大的並發模型 goroutine,它能讓我們快速開發高並發web系統,並且在同樣服務器資源的情況下, Go 語言表現出來的性能也是相當的優秀,這也是推薦大家選擇選擇 Go 語言的原因之一。

 

2. 部署運維成本低

這是我選擇 Go 語言的第二個原因。 Go 語言屬於編譯型語言,最終部署上線,我們只需要部署項目編譯后的二進制文件即可,類比一下像 PHP 或 python 這種解釋性語言在服務器上運行還需要安裝相應的運行環境,而使用二進制代碼方式使得部署變得更為簡單,也不會存在多版本共享環境的兼容性問題,運維也變得非常容易。

3.1 編碼格式統一

Go 語言官方內置了統一代碼風格的工具 gofmt( IDE 一般都會內置集成), 用來規范大家代碼風格,這對於需要多人協作項目尤為重要。

比如,現在你需要接手一個外包團隊項目,這個外包項目如果項目的編碼風格和你不一致,當你接手后,你的心情多半沮喪的,因為這會增加你的改造成本。

更或是,你現在需要接手一個由前前前同事所開發的老項目,如果代碼風格不統一,可想而知接下來會發生什么...

Go 語言官方其實也是注意到了這些痛點,也避免了由第三方產生的規范不一致的問題,以官方的角度統一規范,從而降低整個項目的協作運維成本。

3.2 測試簡單

Go 語言編寫測試代碼真的非常簡單,這個特性真的是剛需啊。我們在項目開發中經常會遇到這樣的事情,比如當你負責為項目負責開發一個獨立的短信服務模塊,這個功能供另個同事在項目里調用,當你開發完成后如何測試功能是否正常呢?

這種測試在 Go 語言中變得相當容易,你只需要在你代碼文件同級目錄創建一個以 _test.go 結尾的文件,然后在文件里編寫針對特定功能測試函數即可,更重要的是,這個測試文件是可以單獨運行的,你不需要再去集成整個項目運行環境, Go 語言讓單元測試變得非常容易。

此外,我們經常還會做一些基准測試,比如:每種語言都會為字符串拼接提供多種實現方式,那不同的拼接性能如何對比測試呢?在 Go 語言里編寫這種基准測試非常簡單,至於更細節的實操內容,后面會有單獨的章節介紹 Go 語言如何編寫測試代碼。

Go 語言生態

當下使用 Go 語言開發的軟件產品非常眾多,而且知名的產品也不再少數,足見這門語言的強大:

軟件 描述 鏈接
docker 家喻戶曉的容器技術 github.com/moby/moby
kubernetes 容器編排引擎,google出品 github.com/kubernetes/kubernetes
etcd 分布式服務注冊發現系統 github.com/etcd-io/etcd
influxdb 時序數據庫 github.com/influxdata/influxdb
grafana 數據監控可視化看板 github.com/grafana/grafana
prometheus 開源監控系統 github.com/prometheus/prometheus
consul 分布式服務發現系統 github.com/hashicorp/consul
nsq 億級消息隊列 github.com/nsqio/nsq
TiDB 分布式數據庫, go + rust 打造 github.com/pingcap/tidb

除了上述表格中列舉的產品外, Go 語言還涉足於像區塊鏈、微服務等場景,開源的框架也非常多,所以說 Go 語言是一門值得去學習的語言。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM