Go語言簡介

簡介:

Go語言是谷歌推出的一種全新的編程語言。

Go概述

Go語言是谷歌2009年發(fā)布的第二款開源編程語言,它專門針對(duì)多處理器系統(tǒng)應(yīng)用程序的編程進(jìn)行了優(yōu)化,它是一種系統(tǒng)語言其非常有用和強(qiáng)大,其程序可以媲美C或C++代碼的速度,而且更加安全、支持并行進(jìn)程。

Go支持面向?qū)ο螅揖哂姓嬲拈]包(closures)和反射 (reflection)等功能。

Go可以在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性。

Go語言簡介

發(fā)表時(shí)間: 2009年

類型: 開源編程語言

公司: 谷歌

官網(wǎng):http://golang.org

API文檔:https://golang.org/doc/

教程:http://www.muzhuangnet.com/manual/Golang/

下載:https://golang.org/dl/

技術(shù)社區(qū):https://gocn.io/

目標(biāo)

Go的目標(biāo)是希望提升現(xiàn)有編程語言對(duì)程序庫等依賴性(dependency)的管理,這些軟件元素會(huì)被應(yīng)用程序反復(fù)調(diào)用。由于存在并行編程模式,因此這一語言也被設(shè)計(jì)用來解決多處理器的任務(wù)。

功能特點(diǎn)

· Go語言設(shè)計(jì)是讓軟件充分發(fā)揮多核心處理器同步多工的優(yōu)點(diǎn),它可解決面向?qū)ο蟪绦蛟O(shè)計(jì)面臨的麻煩。

· Go的速度也非???,幾乎和C或C++程序一樣快,且能夠快速制作程序。Go支持面向?qū)ο?,而且具有真正的閉包(closures)和反射 (reflection)等功能。

· Go語言可以在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性。

· Go語言的另一項(xiàng)與網(wǎng)絡(luò)相關(guān)的特色,是服務(wù)器和用戶端設(shè)備,如PC或手機(jī),可以分擔(dān)工作。因此,使用Go的服務(wù)便可輕松適應(yīng)不同的用戶端處理性能。

· Go可以和Native Client配合使用,Go可以讓應(yīng)用完美的運(yùn)行在瀏覽器內(nèi)。例如,使用Go可以更高效的實(shí)現(xiàn)Wave,無論是在前端還是后臺(tái)。

· Go 同時(shí)具有兩種編譯器,一種是建立在GCC基礎(chǔ)上的Gccgo,另外一種是分別針對(duì)64位x64和32位x86計(jì)算機(jī)的一套編譯器(6g和8g)。谷歌目前正在研發(fā)其對(duì)ARM芯片和Android設(shè)備的支持。

Go有什么優(yōu)勢(shì)

· 可直接編譯成機(jī)器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個(gè)文件上去就完成了。

· 靜態(tài)類型語言,但是有動(dòng)態(tài)語言的感覺,靜態(tài)類型的語言就是可以在編譯的時(shí)候檢查出來隱藏的大多數(shù)問題,動(dòng)態(tài)語言的感覺就是有很多的包可以使用,寫起來的效率很高。

· 語言層面支持并發(fā),這個(gè)就是Go最大的特色,天生的支持并發(fā),Go就是基因里面支持的并發(fā),可以充分的利用多核,很容易的使用并發(fā)。

· 內(nèi)置runtime,支持垃圾回收,這屬于動(dòng)態(tài)語言的特性之一吧,雖然目前來說GC不算完美,但是足以應(yīng)付我們所能遇到的大多數(shù)情況,特別是Go1.1之后的GC。

· 簡單易學(xué),Go語言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go關(guān)鍵字是25個(gè),但是表達(dá)能力很強(qiáng)大,幾乎支持大多數(shù)你在其他語言見過的特性:繼承、重載、對(duì)象等。

· 豐富的標(biāo)準(zhǔn)庫,Go目前已經(jīng)內(nèi)置了大量的庫,特別是網(wǎng)絡(luò)庫非常強(qiáng)大內(nèi)置強(qiáng)大的工具,Go語言里面內(nèi)置了很多工具鏈,最好的應(yīng)該是gofmt工具,自動(dòng)化格式化代碼,能夠讓團(tuán)隊(duì)review變得如此的簡單,代碼格式一模一樣,想不一樣都很困難。

· 跨平臺(tái)編譯,如果你寫的Go代碼不包含cgo,那么就可以做到window系統(tǒng)編譯linux的應(yīng)用,如何做到的呢?Go引用了plan9的代碼,這就是不依賴系統(tǒng)的信息。

· 內(nèi)嵌C支持,前面說了作者是C的作者,所以Go里面也可以直接包含c代碼,利用現(xiàn)有的豐富的C庫。

Go適合用來做什么

· 服務(wù)器編程,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日志、數(shù)據(jù)打包、虛擬機(jī)處理、文件系統(tǒng)等。

· 分布式系統(tǒng),數(shù)據(jù)庫代理器等網(wǎng)絡(luò)編程,這一塊目前應(yīng)用最廣,包括Web應(yīng)用、API應(yīng)用、下載應(yīng)用。

· 內(nèi)存數(shù)據(jù)庫,前一段時(shí)間google開發(fā)的groupcache,couchbase的部分組建。

· 云平臺(tái),目前國外很多云平臺(tái)在采用Go開發(fā),CloudFoundy的部分組建,前VMare的技術(shù)總監(jiān)自己出來搞的apcera云平臺(tái)。

Go成功的項(xiàng)目

· nsq:bitly開源的消息隊(duì)列系統(tǒng),性能非常高,目前他們每天處理數(shù)十億條的消息。

· docker:基于lxc的一個(gè)虛擬打包工具,能夠?qū)崿F(xiàn)PAAS平臺(tái)的組建。

· packer:用來生成不同平臺(tái)的鏡像文件,例如VM、vbox、AWS等,作者是vagrant的作者。

· skynet:分布式調(diào)度框架。

· Doozer:分布式同步工具,類似ZooKeeper。

· Heka:mazila開源的日志處理系統(tǒng)。

· cbfs:couchbase開源的分布式文件系統(tǒng)。

· tsuru:開源的PAAS平臺(tái),和SAE實(shí)現(xiàn)的功能一模一樣。

· groupcache:memcahe作者寫的用于Google下載系統(tǒng)的緩存系統(tǒng)。

· god:類似redis的緩存系統(tǒng),但是支持分布式和擴(kuò)展性。

· gor:網(wǎng)絡(luò)流量抓包和重放工具。

團(tuán)隊(duì)成員

Thompson:1983年圖靈獎(jiǎng)(Turing Award)和1998年美國國家技術(shù)獎(jiǎng)(National Medal of Technology)得主。他與Dennis Ritchie是Unix的原創(chuàng)者。Thompson也發(fā)明了后來衍生出C語言的B程序語言。

Pike:曾是貝爾實(shí)驗(yàn)室(Bell Labs)的Unix團(tuán)隊(duì),和Plan 9操作系統(tǒng)計(jì)劃的成員。他與Thompson共事多年,并共創(chuàng)出廣泛使用的UTF-8 字元編碼。

Robert Griesemer:曾協(xié)助制作Java的HotSpot編譯器,和Chrome瀏覽器的JavaScript引擎V8。

此外還有Plan 9開發(fā)者Russ Cox、和曾改善已廣泛使用之開源碼編譯器GCC的Ian Taylor。

Go語言簡史

2007年,谷歌工程師Rob Pike, Ken Thompson和Robert Griesemer開始設(shè)計(jì)一門全新的語言,這是Go語言的最初原型。

2009年11月10日,Go語言以開放源代碼的方式向全球發(fā)布。

2010年1月10日 , Go語言摘得了TIOBE公布的2009年年度大獎(jiǎng)。

2011年3月16日,Go語言的第一個(gè)穩(wěn)定(stable)版本r56發(fā)布。

2012年3月28日,Go語言的第一個(gè)正式版本Go1發(fā)布。

2013年4月04日,Go語言的第一個(gè)Go 1.1beta1測(cè)試版發(fā)布。

2013年4月08日,Go語言的第二個(gè)Go 1.1beta2測(cè)試版發(fā)布。

2013年5月02日,Go語言Go 1.1RC1版發(fā)布。

2013年5月07日,Go語言Go 1.1RC2版發(fā)布。

2013年5月09日,Go語言Go 1.1RC3版發(fā)布。

2013年5月13日,Go語言Go 1.1正式版發(fā)布。

2013年9月20日,Go語言Go 1.2RC1版發(fā)布。

2014年6月19日,Go語言Go 1.3版發(fā)布。

2015年8月20日,Go語言Go 1.5版發(fā)布,本次更新中移除了”最后殘余的C代碼”。

2016年2月17日 , Go語言Go 1.6版本發(fā)布,本次開始全面支持 HTTP/2 國際標(biāo)準(zhǔn)。

2016年8月15日 , Go語言Go 1.7版本發(fā)布。

支持平臺(tái)

硬件架構(gòu)

Go語言設(shè)計(jì)支持主流的32位和64位的x86平臺(tái),同時(shí)也支持32位的ARM架構(gòu)。

操作系統(tǒng)

Go語言在Go1版本上支持Windows, 蘋果Mac OS X, Linux和FreeBSD操作系統(tǒng)。

開發(fā)工具

LiteIDE

LiteIDE是一款專門為Go語言開發(fā)的跨平臺(tái)輕量級(jí)集成開發(fā)環(huán)境(IDE),由QT編寫。

Sublime Text

Sublime Text 3(以下簡稱Sublime)+ GoSublime + gocode + MarGo的組合。

Vim

Vim是從vi發(fā)展出來的一個(gè)文本編輯器,享有“編輯器之神”的稱號(hào)。代碼補(bǔ)全、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。

Emacs

Emacs是由GNU開源組織開發(fā)出來的一個(gè)文本編輯器,同時(shí)更是一個(gè)整合環(huán)境,曾被人戲稱“一個(gè)偽裝成編輯器的操作系統(tǒng)”。

Eclipse

Eclipse也是非常常用的開發(fā)利器,可以使用Eclipse來編寫Go程序。

IntelliJ IDEA

熟悉Java的讀者應(yīng)該對(duì)于idea不陌生,idea是通過一個(gè)插件來支持go語言的高亮語法,代碼提示和重構(gòu)實(shí)現(xiàn)。

本文來自木莊網(wǎng)絡(luò)博客> Go語言簡介

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Go是谷歌公司2009年推出的一種新的編程語言,雖然已經(jīng)10年歷史了,但畢竟一種語言的發(fā)展是很漫長的一個(gè)過程,在編...
    潁水書生閱讀 459評(píng)論 0 0
  • Go語言簡介 Go語言設(shè)計(jì)的初衷 針對(duì)其他語言的痛點(diǎn)進(jìn)行設(shè)計(jì)并加入并發(fā)編程為大數(shù)據(jù),微服務(wù),并發(fā)而生的通用編程語言...
    SolitaryFG閱讀 2,786評(píng)論 0 1
  • 主要目標(biāo): 兼具Python等動(dòng)態(tài)語言的開發(fā)速度和C/C++等編譯型語言的性能與安全性。支持網(wǎng)絡(luò)編程、系統(tǒng)編程、并...
    jluemmmm閱讀 130評(píng)論 0 0
  • Go 語言簡介 ??Go 是一門開源、支持并發(fā)、垃圾回收的編譯型系統(tǒng)編程語言,從 2007 年末由 Robert ...
    hvkcoder閱讀 555評(píng)論 1 1
  • 祈愿通過學(xué)習(xí)和實(shí)踐金剛智慧,實(shí)現(xiàn)自我成長,妥善處理家庭關(guān)系,社會(huì)關(guān)系,成為智慧的榜樣,并且通過幫助更多的人讓世界變...
    瑩火蟲兒閱讀 196評(píng)論 0 0

友情鏈接更多精彩內(nèi)容