簡(jiǎn)介
Go是Google開發(fā)的一種 靜態(tài)強(qiáng)類型、編譯型,并發(fā)型,并具有垃圾回收功能的編程語(yǔ)言。為了方便搜索和識(shí)別,有時(shí)會(huì)將其稱為Golang。
羅伯特·格瑞史莫,羅勃·派克(Rob Pike)及肯·湯普遜于2007年9月開始設(shè)計(jì)Go語(yǔ)言,稍后Ian Lance Taylor、Russ Cox加入項(xiàng)目。Go語(yǔ)言是基于Inferno操作系統(tǒng)所開發(fā)的。Go語(yǔ)言于2009年11月正式宣布推出,成為開放源代碼項(xiàng)目,并在Linux及Mac OS X平臺(tái)上進(jìn)行了實(shí)現(xiàn),后來(lái)追加了Windows系統(tǒng)下的實(shí)現(xiàn)。在2012年早些時(shí)候發(fā)布了Go 1穩(wěn)定版本。
現(xiàn)在Go的開發(fā)已經(jīng)是完全開放的,并且擁有一個(gè)活躍的社區(qū)。
Go語(yǔ)言的語(yǔ)法接近C語(yǔ)言,但對(duì)于變量的聲明有所不同。Go語(yǔ)言支持垃圾回收功能。Go語(yǔ)言的并行模型是以東尼·霍爾的通信順序進(jìn)程(CSP)為基礎(chǔ),采取類似模型的其他語(yǔ)言包括Occam和Limbo,但它也具有Pi運(yùn)算的特征,比如通道傳輸。在1.8版本中開放插件(Plugin)的支持,這意味著現(xiàn)在能從Go語(yǔ)言中動(dòng)態(tài)加載部分函數(shù)。
與C++相比,Go語(yǔ)言并不包括如異常處理、繼承、泛型、斷言、虛函數(shù)等功能,但增加了 Slice 型、并發(fā)、管道、垃圾回收、接口(Interface)等特性的語(yǔ)言級(jí)支持。Google 目前仍正在討論是否應(yīng)該支持泛型,其態(tài)度還是很開放的,但在該語(yǔ)言的常見問題列表中,對(duì)于斷言的存在,則持負(fù)面態(tài)度,同時(shí)也為自己不提供類型繼承來(lái)辯護(hù)。
不同于Java,Go語(yǔ)言內(nèi)嵌了關(guān)聯(lián)數(shù)組(也稱為哈希表(Hashes)或字典(Dictionaries)),就像字符串類型一樣。
語(yǔ)言特性
1. 垃圾回收
內(nèi)存自動(dòng)回收,再也不需要開發(fā)人員管理內(nèi)存
只需要new分配內(nèi)存,不需要釋放
2. 天然并發(fā)
從語(yǔ)言層面支持并發(fā),非常簡(jiǎn)單
Goroutine,輕量級(jí)線程,創(chuàng)建成千上萬(wàn)個(gè)Goroutine成為可能
基于CSP(Communicating Sequential Process)模型實(shí)現(xiàn)
3. channel
管道,類似unix/li