簡介:html
Go語言是谷歌推出的一種全新的編程語言。前端
Go概述linux
Go語言是谷歌2009年發佈的第二款開源編程語言,它專門針對多處理器系統應用程序的編程進行了優化,它是一種系統語言其很是有用和強大,其程序能夠媲美C或C++代碼的速度,並且更加安全、支持並行進程。程序員
Go支持面向對象,並且具備真正的閉包(closures)和反射 (reflection)等功能。golang
Go能夠在不損失應用程序性能的狀況降低低代碼的複雜性。redis
發表時間: 2009年docker
類型: 開源編程語言數據庫
公司: 谷歌編程
官網:http://golang.orgsegmentfault
API文檔:https://golang.org/doc/
教程:http://www.muzhuangnet.com/ma...
技術社區:https://gocn.io/
目標
Go的目標是但願提高現有編程語言對程序庫等依賴性(dependency)的管理,這些軟件元素會被應用程序反覆調用。因爲存在並行編程模式,所以這一語言也被設計用來解決多處理器的任務。
功能特色
· Go語言設計是讓軟件充分發揮多核心處理器同步多工的優勢,它可解決面向對象程序設計面臨的麻煩。
· Go的速度也很是快,幾乎和C或C++程序同樣快,且可以快速製做程序。Go支持面向對象,並且具備真正的閉包(closures)和反射 (reflection)等功能。
· Go語言能夠在不損失應用程序性能的狀況降低低代碼的複雜性。
· Go語言的另外一項與網絡相關的特點,是服務器和用戶端設備,如PC或手機,能夠分擔工做。所以,使用Go的服務即可輕鬆適應不一樣的用戶端處理性能。
· Go能夠和Native Client配合使用,Go可讓應用完美的運行在瀏覽器內。例如,使用Go能夠更高效的實現Wave,不管是在前端仍是後臺。
· Go 同時具備兩種編譯器,一種是創建在GCC基礎上的Gccgo,另一種是分別針對64位x64和32位x86計算機的一套編譯器(6g和8g)。谷歌目前正在研發其對ARM芯片和Android設備的支持。
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:網絡流量抓包和重放工具。
團隊成員
Thompson:1983年圖靈獎(Turing Award)和1998年美國國家技術獎(National Medal of Technology)得主。他與Dennis Ritchie是Unix的原創者。Thompson也發明了後來衍生出C語言的B程序語言。
Pike:曾是貝爾實驗室(Bell Labs)的Unix團隊,和Plan 9操做系統計劃的成員。他與Thompson共事多年,並共創出普遍使用的UTF-8 字元編碼。
Robert Griesemer:曾協助製做Java的HotSpot編譯器,和Chrome瀏覽器的JavaScript引擎V8。
此外還有Plan 9開發者Russ Cox、和曾改善已普遍使用之開源碼編譯器GCC的Ian Taylor。
Go語言簡史
2007年,谷歌工程師Rob Pike, Ken Thompson和Robert Griesemer開始設計一門全新的語言,這是Go語言的最初原型。
2009年11月10日,Go語言以開放源代碼的方式向全球發佈。
2010年1月10日 , Go語言摘得了TIOBE公佈的2009年年度大獎。
2011年3月16日,Go語言的第一個穩定(stable)版本r56發佈。
2012年3月28日,Go語言的第一個正式版本Go1發佈。
2013年4月04日,Go語言的第一個Go 1.1beta1測試版發佈。
2013年4月08日,Go語言的第二個Go 1.1beta2測試版發佈。
2013年5月02日,Go語言Go 1.1RC1版發佈。
2013年5月07日,Go語言Go 1.1RC2版發佈。
2013年5月09日,Go語言Go 1.1RC3版發佈。
2013年5月13日,Go語言Go 1.1正式版發佈。
2013年9月20日,Go語言Go 1.2RC1版發佈。
2014年6月19日,Go語言Go 1.3版發佈。
2015年8月20日,Go語言Go 1.5版發佈,本次更新中移除了」最後殘餘的C代碼」。
2016年2月17日 , Go語言Go 1.6版本發佈,本次開始全面支持 HTTP/2 國際標準。
2016年8月15日 , Go語言Go 1.7版本發佈。
支持平臺
硬件架構
Go語言設計支持主流的32位和64位的x86平臺,同時也支持32位的ARM架構。
操做系統
Go語言在Go1版本上支持Windows, 蘋果Mac OS X, Linux和FreeBSD操做系統。
開發工具
LiteIDE
LiteIDE是一款專門爲Go語言開發的跨平臺輕量級集成開發環境(IDE),由QT編寫。
Sublime Text
Sublime Text 3(如下簡稱Sublime)+ GoSublime + gocode + MarGo的組合。
Vim
Vim是從vi發展出來的一個文本編輯器,享有「編輯器之神」的稱號。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。
Emacs
Emacs是由GNU開源組織開發出來的一個文本編輯器,同時更是一個整合環境,曾被人戲稱「一個假裝成編輯器的操做系統」。
Eclipse
Eclipse也是很是經常使用的開發利器,可使用Eclipse來編寫Go程序。
IntelliJ IDEA
熟悉Java的讀者應該對於idea不陌生,idea是經過一個插件來支持go語言的高亮語法,代碼提示和重構實現。
本文來自 木莊網絡博客> Go語言簡介