go語言的好處:1、可直接編譯成機器碼,不依賴其他函式庫;2、靜態型別語言,但是有動態語言的感覺,寫起來的效率很高;3、語言層面支持並發;4、內建runtime,支援垃圾回收;5、簡單易學;6、內建了大量的庫,特別是網路庫非常強大;7、內建強大的工具;8、跨平台編譯;9、內嵌C支持,可利用現有的豐富的C庫。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
什麼是Go語言?
Go是一種過程程式語言,可用於快速機器碼編譯。它是一種靜態型別的編譯語言。它提供了並發機制,可以輕鬆開發多核心和聯網的機器級程式。它是快速,動態類型和解釋語言;它提供對介面和類型嵌入的支援。
Go語言是由Google的Robert Griesemer,Rob Pike和Ken Thompson 於2007年開發,但於2009年作為開源程式語言推出。
go語言有什麼好處
#可直接編譯成機器碼,不依賴其他函式庫,glibc的版本有一定要求,部署就是丟一個文件上去就完成了。
靜態類型語言,但是有動態語言的感覺,靜態類型的語言就是可以在編譯的時候檢查出來隱藏的大多數問題,動態語言的感覺就是有很多的包可以使用,寫起來的效率很高。
語言層面支持並發,這個就是Go最大的特色,天生的支持並發,我曾經說過一句話,天生的基因和整容是有區別的,大家一樣美麗,但是你喜歡整容的還是天生基因的美麗呢? Go就是基因裡面支持的並發,可以充分的利用多核,很容易的使用並發。
內建runtime,支援垃圾回收,這屬於動態語言的特性之一吧,雖然目前來說GC不算完美,但足以應付我們所能遇到的大多數情況,特別是Go1.1之後的GC。
簡單易學,Go語言的作者都有C的基因,那麼Go自然而然就有了C的基因,那麼Go關鍵字是25個,但是表達能力很強大,幾乎支援大多數你在其他語言見過的特性:繼承、重載、物件等。
豐富的標準函式庫,Go目前已經內建了大量的函式庫,特別是網路庫非常強大,我最愛的也是這部分。
內建強大的工具,Go語言內建了許多工具鏈,最好的應該是gofmt工具,自動化格式化程式碼,能夠讓團隊review變得如此的簡單,程式碼格式一模一樣,想不一樣都很困難。
跨平台編譯,如果你寫的Go程式碼不包含cgo,那麼就可以做到window系統編譯linux的應用,如何做到的呢? Go引用了plan9的程式碼,這就是不依賴系統的資訊。
內嵌C支持,前面說了作者是C的作者,所以Go裡面也可以直接包含c程式碼,利用現有的豐富的C函式庫。
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:網路流量抓包與重播工具
以下是一些公司,只是一小部分:
Apcera
Stathat
#Juju at Canonical/Ubuntu, presentation
#Beachfront.iO at Beachfront Media
CloudFlare
#Soundcloud
Mozilla
Disqus
Bit.ly
Heroku
youtube
【教學推薦:go語言##】
以上是go語言有什麼好處的詳細內容。更多資訊請關注PHP中文網其他相關文章!