開門見山,一睹golang的風采
- 性能優勢
- 部署運維成本低
- 編碼格式統一;測試簡單
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
語言是一門值得去學習的語言。