Go適合做什麼?為何這麼多人偏愛Go語言?
Go作為Google2009年推出的語言,其被設計成一門應用於搭載 Web 伺服器,儲存叢集或類似用途的巨型中央伺服器的系統程式語言。
對於高效能分散式系統領域而言,Go 語言無疑比大多數其它語言有著更高的開發效率。它提供了海量並行的支援,這對於遊戲服務端的開發而言是再好不過了。
到現在Go的開發已經是完全開放的,並且擁有一個活躍的社群。
哪些大公司在使用Go語言:
1、Google
這個不用多做介紹,作為開發Go語言的公司,當仁不讓。Google基於Go有很多優秀的專案,比如:https://github.com/kubernetes/kubernetes ,大家也可以在Github上 https://github.com/google/ 檢視更多Google的Go開源專案。
2、Facebook
Facebook也在用,為此他們還專門在Github上建立了一個開源組織facebookgo,大家可以通過 https://github.com/facebookgo 訪問檢視facebook開源的專案,比如著名的是平滑升級的grace。
3、騰訊
騰訊作為國內的大公司,還是敢於嘗試的,尤其是Docker容器化這一塊,他們在15年已經做了docker萬臺規模的實踐,具體可以參考http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice
4、百度
目前所知的百度的使用是在運維這邊,是百度運維的一個BFE專案,負責前端流量的接入。他們的負責人在2016年有分享,大家可以看下這個http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend
5、阿里
阿里巴巴具體的專案不太清楚,不過聽說其系統部門、CDN等正在招Go方面的人。
6、京東
京東雲訊息推送系統、雲端儲存,以及京東商城等都有使用Go做開發。
7、小米
小米對Golang的支援,莫過於運維監控系統的開源,也就是 http://open-falcon.com/
此外,小米互娛、小米商城、小米視訊、小米生態鏈等團隊都在使用Golang。
8、360
360對Golang的使用也不少,一個是開源的日誌搜尋系統Poseidon,託管在Github上,https://github.com/Qihoo360/poseidon
還有很多公司我們在這裡就不一一列舉了,從中我們也可知道Go語言的受歡迎程度。
為什麼這麼多人偏愛Go語言:
除了上述業內大牛之外,Go語言也頗受國內很多雲創業公司的喜愛,例如DaoCloud。那他們為什麼會選擇Go呢?與其他語言的應用相比,它有什麼優點呢?
1、學習曲線
它包含了類C語法、GC內建和工程工具。這一點非常重要,因為Go語言容易學習,所以一個普通的大學生花一個星期就能寫出來可以上手的、高效能的應用。在國內大家都追求快,這也是為什麼國內Go流行的原因之一。
2、效率
Go擁有接近C的執行效率和接近PHP的開發效率,這就很有利的支撐了上面大家追求快速的需求。
3、出身名門、血統純正
之所以說Go出身名門,是因為我們知道Go語言出自Google公司,這個公司在業界的知名度和實力自然不用多說。Google公司聚集了一批牛人,在各種程式語言稱雄爭霸的局面下推出新的程式語言,自然有它的戰略考慮。而且從Go語言的發展態勢來看,Google對它這個新的寵兒還是很看重的,Go自然有一個良好的發展前途。我們看看Go語言的主要創造者,血統純正這點就可見端倪了。
Go強大的開發團隊
4、自由高效:組合的思想、無侵入式的介面
Go語言可以說是開發效率和執行效率二者的完美融合,天生的併發程式設計支援。Go語言支援當前所有的程式設計正規化,包括程序式程式設計、面向物件程式設計以及函數語言程式設計。程式設計師們可以各取所需、自由組合、想怎麼玩就怎麼玩。
5、強大的標準庫
這包括網際網路應用、系統程式設計和網路程式設計。Go裡面的標準庫基本上已經是非常穩定了,特別是我這裡提到的三個,網路層、系統層的庫非常實用。
6、部署方便:二進位制檔案、Copy部署
我相信這一點是很多人選擇Go的最大理由,因為部署太方便了,所以現在也有很多人用Go開發運維程式。
7、簡單的併發
它包含了降低心智的併發和簡易的資料同步,我覺得這是Go最大的特色。之所以寫正確的併發、容錯和可擴充套件的程式如此之難,是因為我們用了錯誤的工具和錯誤的抽象,Go可以說這一塊做的相當簡單。
8、穩定性
Go擁有強大的編譯檢查、嚴格的編碼規範和完整的軟體生命週期工具,具有很強的穩定性,穩定壓倒一切。那麼為什麼Go相比於其他程式會更穩定呢?這是因為Go提供了軟體生命週期(開發、測試、部署、維護等等)的各個環節的工具,如go tool、gofmt、go test。
這裡引用知乎裡一個同學對Go評論的話:最開始準備上線的時候其實心裡挺忐忑,畢竟一旦出現故障,不僅黑鍋得自己背,面子也上過不去啊。還好結果蠻漂亮,自上線後沒出現過一次突發性BUG,降低運維難度的同時還減少了機器的負載。我相信這也是大多數人用了Go之後的感言。
Go適合做什麼
很多朋友可能知道Go語言的優勢在哪,卻不知道Go語言適合用於哪些地方。
其實Go語言主要用作伺服器端開發,其定位是用來開發“大型軟體”的,適合於很多程式設計師一起開發大型軟體,並且開發週期長,支援雲端計算的網路服務。Go語言能夠讓程式設計師快速開發,並且在軟體不斷的增長過程中,它能讓程式設計師更容易地進行維護和修改。它融合了傳統編譯型語言的高效性和指令碼語言的易用性和富於表達性。
Go語言作為伺服器程式語言,很適合處理日誌、資料打包、虛擬機器處理、檔案系統、分散式系統、資料庫代理等;網路程式設計方面,Go語言廣泛應用於Web應用、API應用、下載應用等;除此之外,Go語言還可用於記憶體資料庫和雲平臺領域,目前國外很多雲平臺都是採用Go開發。
Go語言的就業前景:
Go語言的安裝:
- 環境安裝:
安裝包下載地址為:https://golang.org/dl/。
如果打不開可以使用這個地址:https://golang.google.cn/dl/。
各個系統對應的包名:
- UNIX/Linux/Mac OS X, 和 FreeBSD 安裝
1、下載原始碼包:go1.4.linux-amd64.tar.gz。
2、將下載的原始碼包解壓至 /usr/local目錄。
3、將 /usr/local/go/bin 目錄新增至PATH環境變數:
注意: MAC 系統下你可以使用 .pkg 結尾的安裝包直接雙擊來完成安裝,安裝目錄在 /usr/local/go/ 下。
- Windows 系統下安裝
Windows 下可以使用 .msi 字尾(在下載列表中可以找到該檔案,如go1.4.2.windows-amd64.msi)的安裝包來安裝。
預設情況下.msi檔案會安裝在 c:Go 目錄下。你可以將 c:Goin 目錄新增到 PATH 環境變數中。新增後你需要重啟命令窗口才能生效。
安裝測試
建立工作目錄 C:>Go_WorkSpace。
檔名: test.go,程式碼如下:
使用 go 命令執行以上程式碼輸出結果如下: