初探Go語言

GO語言

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開發遇到的如下這些問題:瀏覽器

  • 大量的C++代碼,同時又引入了Java和Python
  • 成千上萬的工程師
  • 數以萬計行的代碼
  • 分佈式的編譯系統
  • 數百萬的服務器

上面這些問題產生的痛點:安全

  • 編譯慢
  • 失控的依賴
  • 每一個工程師只是用了一個語言裏面的一部分
  • 程序難以維護(可讀性差、文檔不清晰等)
  • 更新的花費愈來愈長
  • 交叉編譯困難

單純看上面這些問題, 能夠看出當時設計Go的目標是爲了消除各類緩慢和笨重、改進各類低效和擴展性。Go是由那些開發大型系統的人設計的,同時也是爲了這些人服務的;它是爲了解決工程上的問題,不是爲了研究語言設計;它仍是爲了讓咱們的編程變得更溫馨和方便。服務器

單純在語言方面,性能好的語言(好比C/C++),沒有很高的開發效率和靈活性;開發效率高的語言(.NET、Python等)又不具有足夠快的性能。 Go語言的誕生在某種意義上也是爲了解決這個問題。網絡

語言特性

  • 垃圾回收架構

    • 自動回收,不須要開發人員處理,失去了最後的引用的變量將會被銷燬
    • 下降編碼人員工做
  • 支持併發併發

    • go 操做
    • goroutine 用戶級線程
  • 多返回值框架

    • 函數的返回值不止一個能夠
  • 強調簡單、易學
  • 內存管理和語法簡單
  • 快速編譯
  • 併發支持
  • 靜態類型
  • 部署簡單(go install)
  • 自身就是文檔(經過godoc將代碼中的註釋信息構形成文檔)
  • 開源免費(BSD licensed)

應用場景

它最初的構想是做爲一個系統編程語言,但目前也被用於像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語言的特性。

相關文章
相關標籤/搜索