為什麼一定要學Go語言?

Go語言是Google2009發布的第二款開源程式語言。

Go語言專門針對多處理器系統應用程式的編程進行了優化,使用Go編譯的程式可以媲美C或C++程式碼的速度,而且更加安全、支援並行進程。

為什麼要選擇學習Go語言呢?與其他語言的應用相比,它有什麼優點呢?

1、學習曲線

它包含了類C語法、GC內置和工程工具。這一點非常重要,因為Go語言容易學習,所以一個普通的大學生花一個星期就能寫出來可以上手的、高性能的應用。在中國大家都追求快,這也是為什麼中國Go流行的原因之一。

2、效率

Go擁有接近C的運行效率和接近PHP的開發效率,這就很有利的支撐了上面大家追求快速的需求。

3、出身名門、血統純正

之所以說Go語言出身名門,是因為我們知道Go語言出自Google公司,這個公司在業界的知名度和實力自然不用多說。Google公司聚集了一批牛人,在各種程式語言稱雄爭霸的局面下推出新的程式語言,自然有它的戰略考慮。而且從Go語言的發展態勢來看,Google對它這個新的寵兒還是很看重的,Go自然有一個良好的發展前途。我們看看Go語言的主要創造者,血統純正這點就可見端倪了。

4、自由高效:組合的思想、無侵入式的介面

Go語言可以說是開發效率和運行效率二者的完美融合,天生的並發編程支援。Go語言支援當前所有的編程範式,包括過程式編程、面向對象編程以及函數式編程。程式設計師們可以各取所需、自由組合、想怎麼玩就怎麼玩。

5、強大的標準庫

這包括互聯網應用、系統編程和網路編程。Go裡面的標準庫基本上已經是非常穩定了,特別是我這裡提到的三個,網路層、系統層的庫非常實用。

6、部署方便:二進位文件、Copy部署

我相信這一點是很多人選擇Go的最大理由,因為部署太方便了,所以現在也有很多人用Go開發運維程式。

7、簡單的並發

它包含了降低心智的並發和簡易的數據同步,我覺得這是Go最大的特色。之所以寫正確的並發、容錯和可擴展的程式如此之難,是因為我們用了錯誤的工具和錯誤的抽象,Go可以說這一塊做的相當簡單。

8、穩定性

Go擁有強大的編譯檢查、嚴格的編碼規範和完整的軟體生命周期工具,具有很強的穩定性,穩定壓倒一切。那麼為什麼Go相比於其他程式會更穩定呢?這是因為Go提供了軟體生命周期(開發、測試、部署、維護等等)的各個環節的工具,如go tool、gofmt、go test。

Go語言適合用來做什麼?

伺服器編程:以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日誌、數據打包、虛擬機處理、文件系統等。 分散式系統:資料庫代理器等。 網路編程:這一塊目前應用最廣,包括Web應用、API應用、下載應用、記憶體資料庫。 雲平台:google開發的groupcache,couchbase的部分組建雲平台,目前國外很多雲平台在採用Go開發,CloudFoundy的部分組建,前VMare的技術總監自己出來搞的apcera雲平台。

Go語言成功的項目:

nsq:bitly開源的消息隊列系統,性能非常高,目前他們每天處理數十億條的消息 docker:基於lxc的一個虛擬打包工具,能夠實現PAAS平台的組建 packer:用來生成不同平台的鏡像文件,例如VM、vbox、AWS等,作者是vagrant的作者 skynet:分散式調度框架 Doozer:分散式同步工具,類似ZooKeeper Heka:mazila開源的日誌處理系統 cbfs:couchbase開源的分散式文件系統 tsuru:開源的PAAS平台,和SAE實現的功能一模一樣 groupcache:memcahe作者寫的用於Google下載系統的快取系統 god:類似redis的快取系統,但是支援分散式和擴展性 gor:網路流量抓包和重放工具

哪些大公司在用go語言?

Google 這個不用多做介紹,作為開發Go語言的公司,當仁不讓。Google基於Go有很多優秀的項目,比如:https://github.com/kubernetes/kubernetes ,大家也可以在Github上 https://github.com/google/ 查看更多Google的Go開源項目。

Facebook Facebook也在用,為此他們還專門在Github上建立了一個開源組織facebookgo,大家可以通過 https://github.com/facebookgo 訪問查看facebook開源的項目,比如著名的是平滑升級的grace。

騰訊 騰訊作為中國的大公司,還是敢於嘗試的,尤其是Docker容器化這一塊,他們在15年已經做了docker萬台規模的實踐,具體可以參考http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice

百度 目前所知的百度的使用是在運維這邊,是百度運維的一個BFE項目,負責前端流量的接入。他們的負責人在2016年有分享,大家可以看下這個http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend

阿里 阿里巴巴具體的項目不太清楚,不過聽說其系統部門、CDN等正在招Go方面的人。

京東 京東雲消息推送系統、雲存儲,以及京東商城等都有使用Go做開發。

小米 小米對Golang的支援,莫過於運維監控系統的開源,也就是 http://open-falcon.com/

此外,小米互娛、小米商城、小米影片、小米生態鏈等團隊都在使用Golang。

360 360對Golang的使用也不少,一個是開源的日誌搜索系統Poseidon,託管在Github上,https://github.com/Qihoo360/poseidon

Go語言前景:

(*以上數據來源於網路)