在安裝之間,我們先了解Golang
Go語言是谷歌2009發(fā)布的第二款開源編程語言蚌父。Go語言專門針對多處理器系統(tǒng)應(yīng)用程序的編程進(jìn)行了優(yōu)化,使用Go編譯的程序可以媲美C或C++代碼的速度毛萌,而且更加安全苟弛、支持并行進(jìn)程。
Go語言是Google開發(fā)的一種?靜態(tài)強(qiáng)類型阁将、編譯型膏秫,并發(fā)型,并具有垃圾回收功能的編程語言做盅。為了方便搜索和識別缤削,有時會將其稱為Golang。
? 羅伯特·格瑞史莫吹榴,羅勃·派克(Rob Pike)及肯·湯普遜于2007年9月開始設(shè)計Go語言亭敢,稍后Ian LanceTaylor、RussCox加入項目图筹。Go語言是基于Inferno操作系統(tǒng)所開發(fā)的帅刀。Go語言于2009年11月正式宣布推出让腹,成為開放源代碼項目,并在Linux及MacOS X平臺上進(jìn)行了實(shí)現(xiàn)扣溺,后來追加了Windows系統(tǒng)下的實(shí)現(xiàn)骇窍。在2012年早些時候發(fā)布了Go 1穩(wěn)定版本。
現(xiàn)在Go的開發(fā)已經(jīng)是完全開放的锥余,并且擁有一個活躍的社區(qū)像鸡。
Go語言的語法接近C語言,但對于變量的聲明有所不同哈恰。Go語言支持垃圾回收功能只估。Go語言的并行模型是以東尼·霍爾的通信順序進(jìn)程(CSP)為基礎(chǔ),采取類似模型的其他語言包括Occam和Limbo着绷,但它也具有Pi運(yùn)算的特征蛔钙,比如通道傳輸。在1.8版本中開放插件(Plugin)的支持荠医,這意味著現(xiàn)在能從Go語言中動態(tài)加載部分函數(shù)吁脱。
?與C++相比,Go語言并不包括如異常處理彬向、繼承兼贡、泛型、斷言娃胆、虛函數(shù)等功能遍希,但增加了 Slice型、并發(fā)里烦、管道凿蒜、垃圾回收、接口(Interface)等特性的語言級支持胁黑。Google目前仍正在討論是否應(yīng)該支持泛型废封,其態(tài)度還是很開放的,但在該語言的常見問題列表中丧蘸,對于斷言的存在漂洋,則持負(fù)面態(tài)度,同時也為自己不提供類型繼承來辯護(hù)力喷。? ? 不同于Java刽漂,Go語言內(nèi)嵌了關(guān)聯(lián)數(shù)組(也稱為哈希表(Hashes)或字典(Dictionaries)),就像字符串類型一樣冗懦。
語言特性
1. 垃圾回收
內(nèi)存自動回收爽冕,再也不需要開發(fā)人員管理內(nèi)存?
只需要new分配內(nèi)存,不需要釋放
2. 天然并發(fā)
從語言層面支持并發(fā)披蕉,非常簡單
Goroutine,輕量級線程,創(chuàng)建成千上萬個Goroutine成為可能
基于CSP(Communicating Sequential Process)模型實(shí)現(xiàn)
3. channel
管道没讲,類似unix/linux中的pipe
多個Goroutine之間通過channel進(jìn)行通信
支持任何類型
close 內(nèi)置函數(shù)用來關(guān)閉 channel
4. Goroutine
?Go語言的主要的功能在于令人簡易使用的并行設(shè)計眯娱,這個方法叫做Goroutine,通過Goroutine能夠讓你的程序以異步的方式運(yùn)行爬凑,而不需要擔(dān)心一個函數(shù)導(dǎo)致程序中斷徙缴,因此Go語言也非常地適合網(wǎng)絡(luò)服務(wù)。
Goroutine是類似線程的概念(但Goroutine并不是線程)嘁信。線程屬于系統(tǒng)層面于样,通常來說創(chuàng)建一個新的線程會消耗較多的資源且管理不易。而
Goroutine就像輕量級的線程潘靖,但我們稱其為并發(fā)穿剖,一個Go程序可以運(yùn)行超過數(shù)萬個
Goroutine,并且這些性能都是原生級的卦溢,隨時都能夠關(guān)閉糊余、結(jié)束。一個核心里面可以有多個Goroutine单寂,通過GOMAXPROCS參數(shù)你能夠限制Gorotuine可以占用幾個系統(tǒng)線程來避免失控贬芥。 在內(nèi)置的官方包中也不時能夠看見Goroutine的應(yīng)用,像是net/http中用來監(jiān)聽網(wǎng)絡(luò)服務(wù)的函數(shù)實(shí)際上是創(chuàng)建一個不斷運(yùn)行循環(huán)的Goroutine宣决。
編譯器
當(dāng)前有兩個Go語言的編譯器的分支蘸劈。官方編譯器gc和gccgo。官方編譯器在初期使用C寫成尊沸,后用go重寫從而實(shí)現(xiàn)自舉昵时。Gccgo是一個使用標(biāo)準(zhǔn)GCC作為后端的Go編譯器。? ? 官方編譯器支持跨平臺編譯(但不支持CGO)椒丧,允許將源碼編譯為可在目標(biāo)系統(tǒng)壹甥、架構(gòu)上執(zhí)行的二進(jìn)制文件。
First:安裝 golang in mac.
https://golang.google.cn,
go to the web and download golang and install it.
Second:configurate the env for go.
重新打開terminal :輸入語句go env 查看golang 的環(huán)境情況壶熏。
goroot go語言的編譯文件 gopath go項目的庫依賴
Third:Install GO IDE :GOLand jetbrain
安裝go語言的開發(fā)工具
?Four:打開goland下載學(xué)習(xí)代碼?https://github.com/studygolang/studygolang
1)git clone https://github.com/studygolang/studygolang
2) 下載 gvt 依賴管理工具句柠, go get github.com
下載后將 gvt 加入 PATH 中。
/Users/test/go/bin 文件夾
export PATH=$PATH:/Users/test/go/bin
cmd下執(zhí)行g(shù)vt可以檢驗(yàn)是否添加path 成功棒假。
start.sh之間檢查 bin文件夾是否生成OK.
? ? ?下載安裝依賴
cd 到 studygolang 源碼目錄
安裝運(yùn)行溯职,學(xué)習(xí)
資源與學(xué)習(xí):
語法入門等
https://github.com/xmge/gonote
BeeGo 學(xué)習(xí)
https://www.cnblogs.com/tudaogaoyang/p/7928934.html
https://github.com/itcloudy/ERP
Gin 學(xué)習(xí)
https://www.cnblogs.com/tudaogaoyang/p/8056186.html
https://github.com/itcloudy/base-framework/tree/2.0
go語言中文網(wǎng)(查標(biāo)準(zhǔn)庫等)
http://docscn.studygolang.com/pkg/