Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎(chǔ)的讀者快速入門,也適合工作多年的程序員查閱知識(shí)點(diǎn)。
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為阜陽企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷網(wǎng)站建設(shè),阜陽網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
Go 語言
這套教程在講解一些知識(shí)點(diǎn)時(shí),將 Go 語言和其他多種語言進(jìn)行對(duì)比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發(fā),無須第三方庫、開發(fā)者的編程技巧和開發(fā)經(jīng)驗(yàn)就可以輕松搞定。
Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對(duì)外發(fā)布。Go 是非常年輕的一門語言,它的主要目標(biāo)是“兼具 Python 等動(dòng)態(tài)語言的開發(fā)速度和 C/C++ 等編譯型語言的性能與安全性”。
Go語言是編程語言設(shè)計(jì)的又一次嘗試,是對(duì)類C語言的重大改進(jìn),它不但能讓你訪問底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。
Go語言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡(jiǎn)單、并發(fā)性好、語言設(shè)計(jì)良好、執(zhí)行性能好”等優(yōu)勢(shì),目前國(guó)內(nèi)諸多 IT 公司均已采用Go語言開發(fā)項(xiàng)目。Go語言有時(shí)候被描述為“C 類似語言”,或者是“21 世紀(jì)的C語言”。Go 從C語言繼承了相似的表達(dá)式語法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語言一直所看中的編譯后機(jī)器碼的運(yùn)行效率以及和現(xiàn)有操作系統(tǒng)的無縫適配。
因?yàn)镚o語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來并不相同。但是它通過接口(interface)的概念來實(shí)現(xiàn)多態(tài)性。Go語言有一個(gè)清晰易懂的輕量級(jí)類型系統(tǒng),在類型之間也沒有層級(jí)之說。因此可以說Go語言是一門混合型的語言。
此外,很多重要的開源項(xiàng)目都是使用Go語言開發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時(shí),編譯器檢查錯(cuò)誤、優(yōu)化性能并輸出可在不同平臺(tái)上運(yùn)行的二進(jìn)制文件。要?jiǎng)?chuàng)建并運(yùn)行 Go 程序,程序員必須執(zhí)行如下步驟。
使用文本編輯器創(chuàng)建 Go 程序;
保存文件;編譯程序;運(yùn)行編譯得到的可執(zhí)行文件。
這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨(dú)安裝編譯器。
鏈喬教育在線旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國(guó)教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開展的“智慧學(xué)習(xí)工場(chǎng)2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準(zhǔn)的“區(qū)塊鏈技術(shù)專業(yè)”試點(diǎn)工作站。專業(yè)站立足為學(xué)生提供多樣化成長(zhǎng)路徑,推進(jìn)專業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。
1.1 Go 安裝
Go的三種安裝方式
Go有多種安裝方式,你可以選擇自己喜歡的。這里我們介紹三種最常見的安裝方式:
Go源碼安裝:這是一種標(biāo)準(zhǔn)的軟件安裝方式。對(duì)于經(jīng)常使用Unix類系統(tǒng)的用戶,尤其對(duì)于開發(fā)者來說,從源碼安裝可以自己定制。
Go標(biāo)準(zhǔn)包安裝:Go提供了方便的安裝包,支持Windows、Linux、Mac等系統(tǒng)。這種方式適合快速安裝,可根據(jù)自己的系統(tǒng)位數(shù)下載好相應(yīng)的安裝包,一路next就可以輕松安裝了。**推薦這種方式**
第三方工具安裝:目前有很多方便的第三方軟件包工具,例如Ubuntu的apt-get、Mac的homebrew等。這種安裝方式適合那些熟悉相應(yīng)系統(tǒng)的用戶。
最后,如果你想在同一個(gè)系統(tǒng)中安裝多個(gè)版本的Go,你可以參考第三方工具GVM,這是目前在這方面做得最好的工具,除非你知道怎么處理。
Go源碼安裝
在Go的源代碼中,有些部分是用Plan 9 C和ATT匯編寫的,因此假如你要想從源碼安裝,就必須安裝C的編譯工具。
在Mac系統(tǒng)中,只要你安裝了Xcode,就已經(jīng)包含了相應(yīng)的編譯工具。
在類Unix系統(tǒng)中,需要安裝gcc等工具。例如Ubuntu系統(tǒng)可通過在終端中執(zhí)行sudo apt-get install gcc
libc6-dev來安裝編譯工具。
在Windows系統(tǒng)中,你需要安裝MinGW,然后通過MinGW安裝gcc,并設(shè)置相應(yīng)的環(huán)境變量。
你可以直接去官網(wǎng)下載源碼,找相應(yīng)的goVERSION.src.tar.gz的文件下載,下載之后解壓縮到$HOME目錄,執(zhí)行如下代碼:
cd go/src
./all.bash
運(yùn)行all.bash后出現(xiàn)"ALL TESTS PASSED"字樣時(shí)才算安裝成功。
上面是Unix風(fēng)格的命令,Windows下的安裝方式類似,只不過是運(yùn)行all.bat,調(diào)用的編譯器是MinGW的gcc。
如果是Mac或者Unix用戶需要設(shè)置幾個(gè)環(huán)境變量,如果想重啟之后也能生效的話把下面的命令寫到.bashrc或者.zshrc里面,
export GOPATH=$HOME/gopath
export PATH=$PATH:$HOME/go/bin:$GOPATH/bin
如果你是寫入文件的,記得執(zhí)行bash .bashrc或者bash
.zshrc使得設(shè)置立馬生效。
如果是window系統(tǒng),就需要設(shè)置環(huán)境變量,在path里面增加相應(yīng)的go所在的目錄,設(shè)置gopath變量。
當(dāng)你設(shè)置完畢之后在命令行里面輸入go,看到如下圖片即說明你已經(jīng)安裝成功
圖1.1 源碼安裝之后執(zhí)行Go命令的圖
如果出現(xiàn)Go的Usage信息,那么說明Go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了Go的安裝目錄。
關(guān)于上面的GOPATH將在下面小節(jié)詳細(xì)講解
Go標(biāo)準(zhǔn)包安裝
Go提供了每個(gè)平臺(tái)打好包的一鍵安裝,這些包默認(rèn)會(huì)安裝到如下目錄:/usr/local/go
(Windows系統(tǒng):c:\Go),當(dāng)然你可以改變他們的安裝位置,但是改變之后你必須在你的環(huán)境變量中設(shè)置如下信息:
export GOROOT=$HOME/go
export GOPATH=$HOME/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
上面這些命令對(duì)于Mac和Unix用戶來說最好是寫入.bashrc或者.zshrc文件,對(duì)于windows用戶來說當(dāng)然是寫入環(huán)境變量。
如何判斷自己的操作系統(tǒng)是32位還是64位?
我們接下來的Go安裝需要判斷操作系統(tǒng)的位數(shù),所以這小節(jié)我們先確定自己的系統(tǒng)類型。
Windows系統(tǒng)用戶請(qǐng)按Win+R運(yùn)行cmd,輸入systeminfo后回車,稍等片刻,會(huì)出現(xiàn)一些系統(tǒng)信息。在“系統(tǒng)類型”一行中,若顯示“x64-based
PC”,即為64位系統(tǒng);若顯示“X86-based PC”,則為32位系統(tǒng)。
Mac系統(tǒng)用戶建議直接使用64位的,因?yàn)镚o所支持的Mac OS X版本已經(jīng)不支持純32位處理器了。
Linux系統(tǒng)用戶可通過在Terminal中執(zhí)行命令arch(即uname
-m)來查看系統(tǒng)信息:
64位系統(tǒng)顯示
x86_64
32位系統(tǒng)顯示
i386
Mac 安裝
訪問下載地址,32位系統(tǒng)下載go1.4.2.darwin-386-osx10.8.pkg,64位系統(tǒng)下載go1.4.2.darwin-amd64-osx10.8.pkg,雙擊下載文件,一路默認(rèn)安裝點(diǎn)擊下一步,這個(gè)時(shí)候go已經(jīng)安裝到你的系統(tǒng)中,默認(rèn)已經(jīng)在PATH中增加了相應(yīng)的~/go/bin,這個(gè)時(shí)候打開終端,輸入go
看到類似上面源碼安裝成功的圖片說明已經(jīng)安裝成功
如果出現(xiàn)go的Usage信息,那么說明go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了go的安裝目錄。
Linux 安裝
訪問下載地址,32位系統(tǒng)下載go1.4.2.linux-386.tar.gz,64位系統(tǒng)下載go1.4.2.linux-amd64.tar.gz,
假定你想要安裝Go的目錄為 $GO_INSTALL_DIR,后面替換為相應(yīng)的目錄路徑。
解壓縮tar.gz包到安裝目錄下:tar zxvf go1.4.2.linux-amd64.tar.gz -C
$GO_INSTALL_DIR。
設(shè)置PATH,export PATH=$PATH:$GO_INSTALL_DIR/go/bin
然后執(zhí)行g(shù)o
圖1.2 Linux系統(tǒng)下安裝成功之后執(zhí)行g(shù)o顯示的信息
如果出現(xiàn)go的Usage信息,那么說明go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了go的安裝目錄。
Windows 安裝
訪問Google Code 下載頁,32
位請(qǐng)選擇名稱中包含 windows-386 的 msi 安裝包,64 位請(qǐng)選擇名稱中包含 windows-amd64 的。下載好后運(yùn)行,不要修改默認(rèn)安裝目錄
C:\Go\,若安裝到其他位置會(huì)導(dǎo)致不能執(zhí)行自己所編寫的 Go 代碼。安裝完成后默認(rèn)會(huì)在環(huán)境變量 Path 后添加 Go 安裝目錄下的 bin 目錄
C:\Go\bin\,并添加環(huán)境變量 GOROOT,值為 Go 安裝根目錄 C:\Go\ 。
驗(yàn)證是否安裝成功
在運(yùn)行中輸入 cmd 打開命令行工具,在提示符下輸入 go,檢查是否能看到 Usage 信息。輸入
cd %GOROOT%,看是否能進(jìn)入 Go 安裝目錄。若都成功,說明安裝成功。
不能的話請(qǐng)檢查上述環(huán)境變量 Path 和 GOROOT 的值。若不存在請(qǐng)卸載后重新安裝,存在請(qǐng)重啟計(jì)算機(jī)后重試以上步驟。
第三方工具安裝
GVM
gvm是第三方開發(fā)的Go多版本管理工具,類似ruby里面的rvm工具。使用起來相當(dāng)?shù)姆奖?,安裝gvm使用如下命令:
bash (curl -s -S -L )
安裝完成后我們就可以安裝go了:
gvm install go1.4.2
gvm use go1.4.2
也可以使用下面的命令,省去每次調(diào)用gvm use的麻煩: gvm use go1.4.2 --default
執(zhí)行完上面的命令之后GOPATH、GOROOT等環(huán)境變量會(huì)自動(dòng)設(shè)置好,這樣就可以直接使用了。
apt-get
Ubuntu是目前使用最多的Linux桌面系統(tǒng),使用apt-get命令來管理軟件包,我們可以通過下面的命令來安裝Go,為了以后方便,應(yīng)該把
git mercurial 也安裝上:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:gophers/go
sudo apt-get update
sudo apt-get install golang-stable git-core mercurial
homebrew
homebrew是Mac系統(tǒng)下面目前使用最多的管理軟件的工具,目前已支持Go,可以通過命令直接安裝Go,為了以后方便,應(yīng)該把
git mercurial 也安裝上:
brew update brew upgrade
brew install go
brew install git
brew install mercurial
小學(xué)英語教案是小學(xué)英語老師做好教學(xué)的關(guān)鍵,為幫助各位老師做好上課前的準(zhǔn)備,下面我為大家?guī)鞧o straight on英語教案,供各位教師參考!
Go straight on英語教案:
教學(xué)目標(biāo):
1、培養(yǎng)學(xué)生自主參與語言實(shí)踐活動(dòng),在活動(dòng)中樹立 英語學(xué)習(xí) 的信心,增強(qiáng)學(xué)生對(duì)英語學(xué)習(xí)的興趣。
2、 培養(yǎng)學(xué)生聽、說、讀的能力以及交際的能力。
3、去掌握問路和指路的句型。
教學(xué)重點(diǎn):
To practice the dialogue
教學(xué)難點(diǎn):
Act the dialogues
教學(xué) 方法 :
1.情景教學(xué)法
2.自主學(xué)習(xí) 合作探究
教學(xué)準(zhǔn)備:
多媒體 錄音機(jī)
教學(xué)過程:
一、新課導(dǎo)入
情景導(dǎo)入對(duì)話
1.迷路了,怎么辦?是否有過問路或是為別人指路的經(jīng)歷。
學(xué)習(xí)問路的 句子 ,Excuse me,Where is No.2West Lake Road?(說明英語中的地址如何表達(dá))
練習(xí)問路的句子
2. 描述方位;讓學(xué)生知道東南西北的單詞。
二、聽力訓(xùn)練
聽錄音,看圖片
三、對(duì)話處理
教師在黑板上畫出四條街道,并標(biāo)出簡(jiǎn)單的英文名稱,分別表“go straight on,turn right,turn ,left”(提醒”where”的用法。
四、學(xué)以致用
(一)練習(xí)對(duì)話,進(jìn)行鞏固。
(二)表演對(duì)話。
(三)做游戲
1 傳紙團(tuán)。
2 找禮物。
五、作業(yè)設(shè)計(jì)
1.背誦對(duì)話。
2.抄寫單詞。
3. 做練習(xí)冊(cè)
Go straight on教學(xué)設(shè)計(jì):
教材簡(jiǎn)介:
本課教授的是《新標(biāo)準(zhǔn)英語第三冊(cè)》(三年級(jí)起點(diǎn))第二模塊第一單元,教學(xué)內(nèi)容是與方向有關(guān)的句子和問路的禮貌用語。
學(xué)生分析:
本課學(xué)習(xí)對(duì)象是本校四年級(jí)學(xué)生,他們活潑上進(jìn),有一定的英語基礎(chǔ),喜歡合作學(xué)習(xí),有良好的課堂合作學(xué)習(xí)習(xí)慣,能靜能動(dòng),集體觀念較強(qiáng)。
教學(xué)目標(biāo):
1、知識(shí)技能目標(biāo):1.會(huì)用“Excuse me,where’s…please?”問路。
2、會(huì)用“Go straight on.Turn left .Turn righ.”指路。
3、情感目標(biāo):培養(yǎng)學(xué)生懂禮貌的品質(zhì),請(qǐng)別人幫忙要用“Excuse me ”“ please”等禮貌用語。
教學(xué)重點(diǎn):
用英文問路、指路。
教具準(zhǔn)備:
課件、一張由學(xué)校到自己家的路線圖、“Left、 Right” 舞曲影碟
教學(xué)理念:
1、教學(xué)中要循序漸進(jìn),符合學(xué)生的認(rèn)知規(guī)律。
2、教學(xué)不僅要教書,還要育人,要培養(yǎng)學(xué)生良好的學(xué)習(xí)習(xí)慣和行為品質(zhì)。
3、要引導(dǎo)學(xué)生通過感知、體驗(yàn)、實(shí)踐、參與與合作等方式,實(shí)現(xiàn)任務(wù)的目標(biāo);要引導(dǎo)他們學(xué)會(huì)用語言做事情。
教學(xué)過程:
一、Greeting
T:Hi.Boys snd girls.
Ss:Hello.Ms zhao
T:You look happy.How are you today?
Ss:Very well.Thank you .And you?
T:I’m very well.Excuse me,what day is today?
Ss:It’s Friday.
T:Excuse me,what’s the weather like?
Ss:It’s …
二、warmer
1、(Play the video)
T:Boys and girls.Do you like dancing? Good.Stand up ,please.Look and the screen, follow the music , let’s dance .教師在前面示范。
Left.Right.Go.Turn around .Go go go.
Left.Right. Go.Turn around .Go go go.
三、Presentation
1、T talk to S1
T:Excuse me,give me a pencil-box,please?
S1 Pass a pencil-box to T.
2、T pretend to drop the pencil-box.
T:The pencil-box is lost .Where’s my pencil-box ?(Ss poit to it)
3、T:Oh .Go straight on. Turn left .It’s here.Thank you.
4、T:Boys and girls ,now, we’re learning dicretions.
板書Module 2 Directions
Go straight on(畫圖標(biāo))。 Turn left(畫圖標(biāo)) .Turn right(畫圖標(biāo))。
四、Learning and pratice
1、Act and say:Go straight on. Turn left .Turn right.
T:(Turn right)
Ss: Go straight on.…
2、Read the three sentences.
3、Contest:listen and act
每大組派一名成員上臺(tái),教師發(fā)出口令,用上剛才學(xué)過的句子。如果學(xué)生反應(yīng)快,教師加快口令的速度,增加游戲的趣味性。兩個(gè)或多個(gè)一組,一人發(fā)口令,任務(wù)完成后快速坐好。
5、Group show and comments
小組展示,大家評(píng)出最佳小組。
先是個(gè)別學(xué)生評(píng)價(jià),“Excuse me,which group is the winner? ”然后統(tǒng)一評(píng)價(jià)意見。
6、Talk about the text:
T:(Show the picture)This dog is Doudou. He’s lost.(作丟失、不知道在哪兒的動(dòng)作)。
7、T:Where’s the dog’s house:?Please look at the screen, you will find the answer.
8、播放課件
Look.Sam.This dog is lost.My name is Doudou.I live in No. 2 West Lake Road.
9、S1 tells T where the dog’s house is.
10、Read
No. 2 West Lake Road.
11、Continue to watch the flash
Excuse me,Where’s No. 2 West Lake Road,please?
12、T:Excuse me,Where’s No. 2 West Lake Road,please?( 板書 )Do you know?
如果學(xué)生說出答案,教師不要急于表態(tài),引導(dǎo)同學(xué)們看課件檢查;如回答不出,教師鼓勵(lì)學(xué)生認(rèn)真在課件中尋找答案。
13.Read the sentences
Turn left.Go straight on.Turn right.It’s next to a supermarket.
14.Read in role
A:Excuse me,Where’s No. 2 West Lake Road,please?
B:Turn left.Go straight on.Turn right.It’s next to a supermarket.
把Unit 1課件看完 .
五、task
1.Task 1:SB activity 3:find and say
A:Excuse me,where’s the supermarket ,please?
B:Go straight on…
2.Task 2 :Game
Use a scarf to cover S1’s eyes,the class guide him(her) to find his (her)book(pencil-box)
S:Good morning.May I help you?
S1:Yes.Excuse me,where’s my book,please?
S:Go straight on .Turn left.It’s in the desk.
S1:Thank you so much.
S:You’re welcome.
3、Task 3 :talk about the diretions
Show-pair-class
(1)T:Would you like to go to my house?
If you use “Excuse me,Where’s your house?”to ask me,I would like to tell you the dicretions.
T do the action of answering the call
T:Hello.This is Miss Wang.
S1:Hello.This is …Excuse me,where’s your house?
T:(拿出事先畫好的由學(xué)校到自己家的路線圖)Turn left…It’s next to a bookstore.
S1:Thank you. Bye-bye.
T:See you later.
2)Pair work
T:Welcome to my house.Which classmate’s house you would like to go?
You can ask him(her)the directions,be polite,ok?
3)Ask some Ss to talk in class
Step 6:dance
(Play the video)
T:Boy and girls.Are you tired?Do you want to dance? Ok.Let’s begin.
Activity after class:I’m a polite guide
由于工作的契機(jī),最近學(xué)習(xí)了下Gossip,以及go語言的實(shí)現(xiàn)版本HashiCorp/memberlist。網(wǎng)上有個(gè)最基本的memberlist使用的example,在下邊的鏈接中,感興趣可以按照文檔運(yùn)行下感受感受。本文主要講解memberlist v0.1.5 的使用細(xì)節(jié)。
Gossip是最終一致性協(xié)議,是目前性能最好,容錯(cuò)性最好的分布式協(xié)議。目前Prometheus的告警組件alertmanager、redis、s3、區(qū)塊鏈等項(xiàng)目都有使用Gossip。本文不介紹Gossip原理,大家自行谷歌。
簡(jiǎn)單的幾步即可搭建gossip集群
感謝已經(jīng)有網(wǎng)友為我們實(shí)現(xiàn)了一個(gè)example(
)。
哪里有問題,還請(qǐng)大家多多指正