Go(一般稱爲Golang)是由Google於2009年由Robert Griesemer,Rob Pike和Ken Thompson(C語言做者之一,UNXI建立者)建立的一種編程語言。Go是一個靜態類型、編譯型語言,很像C。具備 存儲器的安全,垃圾回收,結構輸入和 CSP式的併發特性。它的編譯器,工具,和源代碼都是免費和開源的。數據庫
Go是從2007年底由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發佈了Go 1穩定版本。如今Go的開發已是徹底開放的,而且擁有一個活躍的社區。編程
設計Go語言是爲了解決當時Google開發遇到的如下這些問題:瀏覽器
上面這些問題產生的痛點:安全
單純看上面這些問題, 能夠看出當時設計Go的目標是爲了消除各類緩慢和笨重、改進各類低效和擴展性。Go是由那些開發大型系統的人設計的,同時也是爲了這些人服務的;它是爲了解決工程上的問題,不是爲了研究語言設計;它仍是爲了讓咱們的編程變得更溫馨和方便。服務器
單純在語言方面,性能好的語言(好比C/C++),沒有很高的開發效率和靈活性;開發效率高的語言(.NET、Python等)又不具有足夠快的性能。 Go語言的誕生在某種意義上也是爲了解決這個問題。網絡
垃圾回收架構
支持併發併發
多返回值框架
它最初的構想是做爲一個系統編程語言,但目前也被用於像Web Server,存儲架構等這類分佈式、高併發系統中。固然也能夠用於通常的文字處理和做爲腳本程序。編程語言
對於高性能分佈式系統領域而言,Go 語言無疑比大多數其它語言有着更高的開發效率。它提供了海量並行的支持,這對於遊戲服務端的開發而言是再好不過了。
服務器編程,之前你若是使用C或者C++作的那些事情,用Go來作很合適,例如處理日誌、數據打包、虛擬機處理、文件系統等。
分佈式系統,數據庫代理器等網絡編程,這一塊目前應用最廣,包括Web應用、API應用、下載應用、
內存數據庫,前一段時間google開發的groupcache,couchbase的部分組建
雲平臺,目前國外不少雲平臺在採用Go開發,CloudFoundy的部分組建,前VMare的技術總監本身出來搞的apcera雲平臺。
Go的編譯器做爲Native Client被內嵌到Chrome瀏覽器中,能夠被Web應用程序用來執行本地代碼;同時Go也能夠運行在Intel和ARM的處理器上。
目前已被Google集成到Google APP Engine中,在基於Google App Engine基礎設施的Web應用中也獲得了很好的應用。目前GAE中僅支持三種應用程序開發語言:Java、Python和Go。(注:GAE的連接)
但不適合應用到對實時性要求很高的系統中,由於Go的內存模型是基於垃圾回收機制和原子內存分配。
可是做爲2009年誕生的一門語言,至今(2018年)已經有九年時間。它的發展並無像一個框架那樣迅速鋪展開來,可是藉着Google這顆大樹,市面已經有不少知名公司都在使用這門語言。因此還以有必要了解如下的,主要是體驗一下Go語言的特性。