Go語(yǔ)言講義資料_第1頁(yè)
Go語(yǔ)言講義資料_第2頁(yè)
Go語(yǔ)言講義資料_第3頁(yè)
Go語(yǔ)言講義資料_第4頁(yè)
Go語(yǔ)言講義資料_第5頁(yè)
已閱讀5頁(yè),還剩127頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

區(qū)塊鏈基礎(chǔ)

二:初識(shí)Go語(yǔ)言

1:GO語(yǔ)言介紹

1.1GO語(yǔ)言是什么

"Go是一種開(kāi)源的程序設(shè)計(jì)語(yǔ)言,它意在使得人們能夠方便地構(gòu)建簡(jiǎn)單、可靠、高效率的軟件?(來(lái)自go官網(wǎng)

我們程序員在開(kāi)發(fā)程序,開(kāi)發(fā)軟件時(shí)都會(huì)選擇一門(mén)編程語(yǔ)言,那么我們應(yīng)該怎樣進(jìn)行選擇呢?可能有同學(xué)會(huì)說(shuō),我

們要選擇一門(mén)簡(jiǎn)單的,容易學(xué)習(xí)的而且開(kāi)發(fā)效率高的.能夠在很短的時(shí)間內(nèi)開(kāi)發(fā)完成一個(gè)軟件,這樣老板會(huì)非常

的滿意.能夠升職加薪,python語(yǔ)言或者Ruby語(yǔ)言就法常適合這種快速開(kāi)發(fā).但是問(wèn)題是,用這種語(yǔ)言開(kāi)發(fā)的軟

件,當(dāng)用戶量多了,運(yùn)行的速度會(huì)非常慢,給人的感覺(jué)就是非常卡,大家想一下這種軟件還有人愿意使用嗎?那可

能又有同學(xué)說(shuō)了.我們要學(xué)習(xí)運(yùn)行速度快的編程語(yǔ)言,例如C或者是C++,但是這類(lèi)編程語(yǔ)言學(xué)習(xí)難度是非常大的。

那么有沒(méi)有一種編程語(yǔ)言,學(xué)習(xí)非常簡(jiǎn)單,開(kāi)發(fā)速度非???,開(kāi)發(fā)出的軟件電腦運(yùn)行速度非??炷??有,就是我們

今天開(kāi)始學(xué)習(xí)的G0語(yǔ)言。G0語(yǔ)言借鑒了Python等其它編程語(yǔ)言簡(jiǎn)單,易學(xué).生產(chǎn)效率高.同時(shí)G。語(yǔ)言專(zhuān)門(mén)針

對(duì)多處理器(多核CPU,在這里可以給學(xué)生看一下wind。%下的多核CPU.)系統(tǒng)依程序進(jìn)行了優(yōu)化(讓每核CPU

都能夠執(zhí)行G0語(yǔ)言開(kāi)發(fā)的程序).這樣使用G0語(yǔ)言開(kāi)發(fā)的程序運(yùn)行的速度可以媲美C或C++開(kāi)發(fā)程序的速度.

1.2G0語(yǔ)言優(yōu)勢(shì)

1:運(yùn)行速度快,簡(jiǎn)單易學(xué)

2:薪水待遇高

GO開(kāi)發(fā)工程師4掠丹楓科技有限公司4僚朝陽(yáng)區(qū)2-2.5萬(wàn)/月

GO開(kāi)發(fā)工程師4匕京阿提拉科技有限公司4僚1-1.5萬(wàn)/月

區(qū)塊鏈開(kāi)發(fā)工程師(Go語(yǔ)言)4晾世紀(jì)帶數(shù)據(jù)中心有限公司」晾-朝陽(yáng)區(qū)2.5-3萬(wàn)/月

GO開(kāi)發(fā)工程師Adhub(鈞云)4掠朝陽(yáng)區(qū)1-2.5萬(wàn)/月

3:適合區(qū)塊鏈開(kāi)發(fā)

4跨平臺(tái)

5:豐富的標(biāo)準(zhǔn)庫(kù)(指令),G。目前已經(jīng)內(nèi)置了大量的庫(kù),特別是網(wǎng)絡(luò)庫(kù)非常強(qiáng)大(開(kāi)發(fā)飛秋軟件)

6:G。里面也可以直接包含C代嗎,利用現(xiàn)有的豐富的C庫(kù)

7:語(yǔ)言層面支持并發(fā),這個(gè)就是Go最大的特色,天生的支持并發(fā)。所謂并發(fā),所有正在運(yùn)行的程序輪流使用CPU.

每個(gè)程序允許占用CPU的時(shí)間非常短(比如10亳秒),這樣用戶根本感覺(jué)不出來(lái)CPU是在輪流為多個(gè)程序服務(wù),就好象

所有的程序都在不間斷地運(yùn)行一樣。并發(fā)好處就是可以運(yùn)行多個(gè)程序.并不卡頓。

1.3G0語(yǔ)言能干什么

1:網(wǎng)絡(luò)編程,這一塊目前應(yīng)用原廣,例如網(wǎng)站開(kāi)發(fā).

2:服務(wù)器編程.例如:處理日志.處理文件。(在網(wǎng)站開(kāi)發(fā)的過(guò)程中都會(huì)涉及到)

3:區(qū)塊鏈開(kāi)發(fā)

2:環(huán)境安裝

前面已經(jīng)對(duì)GO語(yǔ)言做了一個(gè)簡(jiǎn)單的介紹,相信大家也已經(jīng)基本有所了解了,那么我相信大家迫K及待的想學(xué)習(xí)G。語(yǔ)言了,但

是我們?cè)诰唧w學(xué)習(xí)GO語(yǔ)言前.需要先安裝GC的開(kāi)發(fā)環(huán)境,只有把GO的開(kāi)發(fā)環(huán)境安裝好了,才能有GO語(yǔ)言的指令來(lái)開(kāi)發(fā)網(wǎng)

站.飛秋等等軟件。也就是所謂的環(huán)境安裝,就是將GO語(yǔ)言的指令都安裝在你的電腦上,那么你在開(kāi)發(fā)軟件的時(shí)候就可以直

接用了。GO環(huán)境的安裝分為windows系統(tǒng)的安裝和linux系統(tǒng)的安裝,我們基礎(chǔ)班先學(xué)習(xí)windows下的安裝,就業(yè)班學(xué)習(xí)linux

系統(tǒng)下G。環(huán)境的安裝。

Windows下GO語(yǔ)言的環(huán)境安裝步驟如下:

Go安裝包下載網(wǎng)址:https:〃/d<Mnload

有zip壓縮版和msi安裝版兩個(gè)按本下ft(這里使用msi安裝版,比較方便)。

運(yùn)行msi安裝文件,千萬(wàn)不要在安裝路在中出現(xiàn)中文,一路Nexi.(關(guān)于安裝路徑在這里可以給學(xué)生重點(diǎn)強(qiáng)調(diào).安裝的位

置以及不能出現(xiàn)中文名稱(chēng))

3:第一個(gè)GO程序

下面我們就用IDE工具,開(kāi)發(fā)第一個(gè)GO程序,具體步驟如下:

1:選擇文件--->新建彈出如下對(duì)話框。

注意:程序名稱(chēng),和程序保存位置不能輸入中文

2:新建完成后,開(kāi)始輸入代碼,

pack?9esin

import-fmt-

3/funomain()(

6£MU??X.1IIV("livllvyv**)

7}

8

第一行:每個(gè)Go源代碼文件的開(kāi)頭都是一個(gè)package聲明.表示該Go代碼所屬的包。

GO語(yǔ)言中是通過(guò)包來(lái)對(duì)代碼進(jìn)行管理的。那么什么是包呢?我通過(guò)一個(gè)例子來(lái)解釋一下包的概念。例如:有一家公司叫“京東

該公司有一個(gè)項(xiàng)目叫"京東網(wǎng)上商城”,該項(xiàng)目下面有管理“客戶信息”的代碼,另外一家公司叫“淘寶”,該公司也有一

個(gè)項(xiàng)目叫?淘寶網(wǎng)上商城二該項(xiàng)目下面也有管理的?客戶信息”的代碼,我開(kāi)發(fā)的“客戶管理軟件二既要用到?京東一的客

戶信息管理代碼,也要用到“淘寶”的客戶信息管理代碼,為了能夠很好的區(qū)分,我們?cè)谑褂脮r(shí)必須寫(xiě)清楚,客戶的信息管理

代碼到底是來(lái)自哪個(gè)商城,所以我可以這樣寫(xiě).import京東”.表示所使用的■客戶信息代碼”是來(lái)自“京東?的,那么?京東"

就是一個(gè)標(biāo)識(shí),也就是包。所以說(shuō),包就是一個(gè)標(biāo)識(shí),標(biāo)志著著你寫(xiě)的GO代碼來(lái)自哪.這樣代碼管理非常清晰,使用也非常方

便。

那么后面隨著我們學(xué)習(xí)的深入,學(xué)習(xí)的代碼也建來(lái)越多,我們給大家去講解怎樣自己創(chuàng)建包.來(lái)管理代碼。創(chuàng)建包用到的就是

package.

但是,不管你創(chuàng)建多少個(gè)包,要想讓程序運(yùn)行,必須包含一個(gè)main包。如果缺少該包,程序是元法運(yùn)行的。

第二行代碼:import表示導(dǎo)入,-fmt-是包名.

不管是使用我們自己定義的包還是GO自帶都是通過(guò)import導(dǎo)入的.?fmt.是GO自帶的包,該包包含了怎樣將信息打印在電

腦屏幕上。注意包名要用表示。

第五行代碼:表示程序的入口.程序就是從該位置開(kāi)始執(zhí)行的.就像是教室的門(mén)口一樣,注意該行代碼是固定的寫(xiě)法,func與

main之間必須有空格.同時(shí)main后面必須帶小括號(hào),后面的一對(duì)大括號(hào)表示要完成的具體工作,也就是完成具體任務(wù)的代碼必

須寫(xiě)在一對(duì)大括號(hào)內(nèi)。

func表示后面限者的mam是一個(gè)函數(shù),函數(shù)必須有一對(duì)小括號(hào)。什么是函數(shù)呢?現(xiàn)在大家可以先理解與我們?cè)跀?shù)學(xué)中學(xué)到的

函數(shù)是一樣的,都是實(shí)現(xiàn)某個(gè)具體的功能,例如我們學(xué)習(xí)的三角函數(shù)等Main函數(shù)實(shí)現(xiàn)的就是人口功能再次強(qiáng)調(diào)一下,GO

語(yǔ)言中的函數(shù)前面必須加上func這個(gè)單詞.而且函數(shù)名稱(chēng)后面必須跟一對(duì)小括號(hào)。

第六行代碼:就是使用了fmt包(注意具體使用的時(shí)候不需要加上雙引號(hào))中的Print函數(shù).將要力訓(xùn)。go-打印在屏幕上。

這行代碼要注意的是,fmt包與Print函數(shù)之間是用.(點(diǎn)連接的),該點(diǎn)是在半角輸入法狀態(tài)下輸入,同時(shí)Print函數(shù)第一個(gè)字母P

是大寫(xiě)的,不能寫(xiě)成小寫(xiě),也就是說(shuō)G。語(yǔ)言是區(qū)分大小寫(xiě)的.有很多同學(xué)在這里容易出錯(cuò)。將要輸出的信息寫(xiě)在Prini函數(shù)的

括號(hào)內(nèi)(注意括號(hào)也是在平角狀態(tài)下輸入的),并且用雙弓I號(hào)包哀起來(lái)(雙引號(hào)也是半角狀態(tài)下輸入的)

3:代碼運(yùn)行

我們第一個(gè)GO程序已經(jīng)寫(xiě)完了,那么我們寫(xiě)的程序到底能否運(yùn)行呢?是否有錯(cuò)誤呢?下面我們執(zhí)行我們的程序,程序的執(zhí)行

分為兩步:

(1)編譯

編譯的操作步驟:點(diǎn)擊?編譯”菜單,選擇"Build"(或者直接按快捷鍵Ctrl+B).編譯的目的是檢查我們寫(xiě)的代碼是否

出錯(cuò),如果沒(méi)有出錯(cuò),那么會(huì)提示“成?T,并且在我們程序所在的目錄生成一個(gè).exe文件,該文件就是可執(zhí)行文件。如

果出錯(cuò)那么會(huì)顯示錯(cuò)誤信息,并且不會(huì)生成.exe文件

(2)執(zhí)行

編譯操作完成后,我們就可以執(zhí)行我們的代碼了,選擇?編譯”菜單中的.Run,,執(zhí)行。執(zhí)行的就是編譯所生成

的exe文件。這時(shí),有同學(xué)可能就會(huì)問(wèn),如果我們不執(zhí)行*Build",直接執(zhí)行“Run",可以嗎?不可以,因?yàn)椴?/p>

執(zhí)行"Build"就無(wú)法生成?.exe”文件,那么也就無(wú)法執(zhí)行。最后,我們?yōu)榱朔奖愀咝Э梢赃x擇一Run”,這個(gè)選

項(xiàng),將編譯與執(zhí)行放在一起操作.

4:其它注意事項(xiàng)

現(xiàn)在我們已經(jīng)將我們寫(xiě)的第一個(gè)GO語(yǔ)言程序,執(zhí)行成功了.但是還有以下幾點(diǎn)內(nèi)容需要在給大家強(qiáng)調(diào)一下

(1)強(qiáng)制左花括號(hào){的放置位置,如果把左花括號(hào){另起一行放置,這樣儆的結(jié)果是G。編譯器報(bào)告編譯錯(cuò)誤,

(2)每行代碼占一行。

(3)如果我們?cè)谖覀円呀?jīng)成功的程序中,在加入一行輸入,應(yīng)該怎么加呢?直接輸入fmLPrint(“aaaaa)然后直接

執(zhí).Rud,發(fā)現(xiàn)并沒(méi)有新的內(nèi)容輸出,原因是什么?應(yīng)該怎么做?

(4)關(guān)于換行輸出的問(wèn)題.前面的檢出都沒(méi)有換行,那么怎樣進(jìn)行換行輸出呢?

5:總結(jié)

對(duì)第一個(gè)GO程序進(jìn)行總結(jié)。

4:學(xué)習(xí)資料

Go語(yǔ)言官網(wǎng)(需要翻墻):htlps:〃/

go中文社區(qū):https:〃studygolang.8m

go中文在線文檔:hODS:〃/Dkedoc

三:注釋

1:注釋作用

在前面我們已經(jīng)寫(xiě)過(guò)第一個(gè)G。程序了,該程片的功能很簡(jiǎn)單,代碼量不是很多,也就是幾行代宿。但是大家看下面這段代碼,

代碼量比我們寫(xiě)的第一個(gè)程序代碼量多了很多,代碼多了以后.閱讀起來(lái)非常不容易,

pack?9?BMiin

2

4

-fuacnalnOA

vaxn(10)lnt

varlfjint

--for1-Or1<101(

n(i]?i?100

for)?Of)<IOJ”?(

fat.Printf(*El?wnt(%d)-%d'.n-rj.n(jl)

接下來(lái),在看下面的代碼,由于在一些代碼行上有漢字,所以閱讀起來(lái)就很方便

packagemain

Xnpore°fmf

tuncmain(>(|.

varn(11)1ntnh?個(gè)KJ出力10的敢川?/

varjint

為敢綃n切始化凡米?/]

工1.-0j1,<匚-------------------------------

n[i].1.1004口應(yīng)一為i?100?/

蛤曲內(nèi)小茲阿尤索的佰?/

j-0/j<10/(

fmt?Prin^f(,'Elomont(%d]■%d\nw/j.n[j])

我們通過(guò)用自己熟悉的語(yǔ)言(例如.漢語(yǔ)),在程序中對(duì)某些代碼進(jìn)行標(biāo)注說(shuō)明,這就是注釋的作用,能夠大大增強(qiáng)程序

的可讀性-以后,在公司中做開(kāi)發(fā),其他程序員會(huì)經(jīng)常閱讀我們寫(xiě)的代碼,當(dāng)然,我們也會(huì)經(jīng)常閱讀別的程序員寫(xiě)的代碼,如

果代碼中加了注釋?zhuān)敲撮喿x起來(lái)就非常容易了。

2:注釋分類(lèi)

(1)單行注釋

所謂單行注釋.就是每次給一行代碼加注稀.你可以在任何地方使用以〃開(kāi)頭的單行注祥。

fmt.Println("hellogo")〃將信息輸出到界格卜..

以〃開(kāi)頭,〃右邊的所有東西當(dāng)做說(shuō)明,而不是真正要執(zhí)行的程序,起輔助說(shuō)明作用

(2)多行注釋

若果代碼量比多.每行加注釋?zhuān)闰月闊?,可以使用多行注釋?/p>

5/funcmain(){

/*

i以卜兩行代碼都是將信電打卬住屏樣H

j*/

)fmC.P£inUlii("h?llQyu")

fmt.Println("Iloveyou")

L}

2

除了給代碼加上說(shuō)明.用注釋以外.如果你寫(xiě)的代碼不想讓計(jì)算機(jī)執(zhí)行,那么也可以加上注釋.

加了注釋后代碼不會(huì)被編譯執(zhí)行,這就是對(duì)已有的代碼進(jìn)行注銷(xiāo)。

(3)重點(diǎn)強(qiáng)調(diào)

以后寫(xiě)程序要多加注祥,這是我們程序猿的專(zhuān)業(yè)和職業(yè)道德,不加注釋就是流氓。

四:變量

1:什么叫變量

在前面的講解案例中,我們是讓計(jì)算機(jī)輸出數(shù)據(jù)到屏幕上,那么有同學(xué)可能就要問(wèn)了,怎樣讓計(jì)算機(jī)保存我們通過(guò)鍵盤(pán)輸入的

數(shù)據(jù)呢?這就要用到變量了。

所謂的變量簡(jiǎn)單的理解就是計(jì)算機(jī)用來(lái)存儲(chǔ)數(shù)據(jù)的“我們可以理解變量就像我們?nèi)コ匈I(mǎi)商品時(shí)用到的購(gòu)物車(chē).我們先將商品

從貨架上拿下來(lái),放到購(gòu)物車(chē)中,結(jié)賬時(shí)在從購(gòu)物車(chē)中取出商品。計(jì)算機(jī)通過(guò)變量來(lái)保存數(shù)據(jù)實(shí)際上將數(shù)據(jù)存儲(chǔ)到計(jì)算機(jī)的內(nèi)

存中,這里我們可以畫(huà)一個(gè)圖給大家理解一下。

內(nèi)存

0x100010

100

0x1000001

200

后0x00010001

計(jì)算機(jī)將內(nèi)存劃分成不同的區(qū)域,數(shù)據(jù)就是存偌在這些區(qū)域中,那么怎樣從這些區(qū)域中將數(shù)據(jù)取出來(lái)呢?計(jì)算機(jī)將每塊區(qū)域都

加上了一串?dāng)?shù)字,作為編號(hào)。通過(guò)該編號(hào)就可以將數(shù)據(jù)取出來(lái)了,但是問(wèn)題是,這一串?dāng)?shù)字對(duì)我們程序員來(lái)說(shuō)是非常難記憶的,

為了解決這個(gè)問(wèn)題,我們可以通過(guò)變量的方式耒表示存儲(chǔ)的數(shù)據(jù),如下圖

我們給每個(gè)存儲(chǔ)區(qū)域加上了Numberl.Numbe2Name等符號(hào),這樣通過(guò)這些符號(hào)來(lái)存儲(chǔ)數(shù)據(jù),然后通過(guò)這些符號(hào)取出數(shù)據(jù)就

非常容易,方便了。這些符號(hào)就是變量

2:變量類(lèi)型

我們現(xiàn)在理解了變量可以用來(lái)存儲(chǔ)數(shù)據(jù).但是我們要存儲(chǔ)的數(shù)據(jù)類(lèi)型是各種各樣的.例如整數(shù).小數(shù).文本等等,所以我們

必須在定義變量時(shí)就要告訴計(jì)算機(jī),定義的變置存儲(chǔ)是什么類(lèi)型的數(shù)據(jù).那么在內(nèi)存中就可以根據(jù)不同的類(lèi)型來(lái)開(kāi)辟不同的存

儲(chǔ)空間。

生活中關(guān)于?類(lèi)型”的例子:

關(guān)于G。語(yǔ)言中的有哪些類(lèi)型’我們后面會(huì)具體講解,下面我們先看一下怎樣聲明變量?

3:變量聲明

所謂聲明變量就是創(chuàng)建一個(gè)變量.并且指定該變量存儲(chǔ)什么類(lèi)型的數(shù)據(jù)C

Go語(yǔ)言引入了關(guān)鍵字var,而類(lèi)型信息放在變量名之后,示例如下.

1

2packagemain

3

4insert"fmt"

5

6?funcmain(){

M測(cè)試變定義”)

7fmt.Printin(hi

//I、聲明格式var變址名類(lèi)型,變量聲明了,必須要使用

8〃2、聲明整型變hb該變顯默認(rèn)值為0

9〃3、同一個(gè){)里.聲明的變砒名是唯一的

10varaint

11fmt.Printin(**a■”,a)

12

13〃4、可以同時(shí)聲明多個(gè)變量,中間用逗號(hào)隔開(kāi)

14//varb,cint

15}

16

注意:這里的輸出是先將變量a的值取出來(lái),然言在打印在屏幕上。所以不能給a這個(gè)變量加上引號(hào)。

4:變量初始化

現(xiàn)在我們雖然已經(jīng)完成變量的定義了,但是該變量中存儲(chǔ)的值,并不是我們想要的,我們希望變量中存儲(chǔ)的是我們想要的值,

應(yīng)該怎么辦?

我們可以在定義變量時(shí),就給變H賦值,這種方式就是變量的初始化。示例如下:

varbint=10---C賦鯨b

fmt?Printin(b)

注意:在這里我們將'="符號(hào),讀作“賦值號(hào)”,不能讀作“等號(hào)”。

問(wèn)題:以下的程序輸出的結(jié)果是多少?

varcint=20

fmt.Println("c")

同時(shí)再次強(qiáng)調(diào)一下在這里輸出變量c的值,所以不能給變量c加上雙弓I號(hào)。

5:變量賦值

除了在定義變量時(shí),完成初始化以外,我們也可以在變量定義完后,再給變昆賦值.也就是先聲明后賦值,示例如下:

varb,定義完變量b,c后,再對(duì)其賦值

b=10

c=20輸出兩個(gè)變量的值

fmt.Printin(b)

fmt.Printin(c)

注意:上面的輸出語(yǔ)句也可以只使用一個(gè)Pnntln函數(shù).具體如下:fmt.Pnntln(a.b).中間用逗號(hào)進(jìn)行分割

問(wèn)題1:以下程序的輸出結(jié)果是多少?

varaint=10

varbint

b=a

fmt.Printin(b)

問(wèn)題2:以下程序的輸出結(jié)果是多少?

varaint=10

varbint=20|

b=a

fmt.Printin(b)

結(jié)論:變?可以重復(fù)賦值,一旦給一個(gè)變量賦了新值,那么變量中的老值就不復(fù)存在了

6:自動(dòng)推導(dǎo)類(lèi)型

在給變量賦值時(shí),我們感覺(jué)非常麻煩,有沒(méi)有更簡(jiǎn)單的給變量賦值的方式,我們可以使用自動(dòng)推導(dǎo)類(lèi)型.具體示例如下:

num:=30

fmt?Printin(num)

所謂自動(dòng)推導(dǎo)類(lèi)型,就是不用通過(guò)var聲明變量,不用指定類(lèi)型,直接在變量名后面跟”:“號(hào).同時(shí)完成賦值。那么G。會(huì)根

據(jù)所賦的值自動(dòng)推導(dǎo)出變量的類(lèi)型。如果給num變量賦值為小數(shù),那么該變量的類(lèi)型為小數(shù)類(lèi)型(浮點(diǎn))。

通過(guò)比較,我們發(fā)現(xiàn)這種方式比前面的賦值方式要簡(jiǎn)單方便。這種方式,也是我們以后開(kāi)發(fā)過(guò)程中最常用的方式.

7:多重賦值匿名變量

(1)多重賦值

在上面的講解中,我們給變量num賦值.采用了自動(dòng)推導(dǎo)的方式,如果想一次使用自動(dòng)推導(dǎo)的方式,給多個(gè)變量賦值.應(yīng)該怎

樣實(shí)現(xiàn)呢?具體如下:

/funcmain(){

a:=1

b:=10

c:=20

fmt.Printin(a,b,c)

)

I

但是這種方式寫(xiě)起來(lái)非常的復(fù)雜.可以用如下的方式進(jìn)行簡(jiǎn)化

a,b,c:=1,10,30

fmt.Printin(a,b,c)

將1的值瞰值給a,將10的值賦值給b,將30的值賦值給c.

(2)匿名變量

匿名變量,丟棄數(shù)據(jù)不進(jìn)行處理.匿名變量配合函數(shù)返回值使用才有價(jià)值.目前大家只需要知道其語(yǔ)法,后面學(xué)到函數(shù)時(shí).我們?cè)趶?qiáng)調(diào)匿名變量的

使用場(chǎng)景。

現(xiàn)在我們先看一下匿名變量的語(yǔ)法

Ii,j:=1,2,3,4I

8:數(shù)據(jù)置換

到目前為止,我們已經(jīng)學(xué)習(xí)了什么是變0,變百的定義,以及變錄的賦值,那么下面大家思考如下問(wèn)題.

有兩個(gè)變量a和b.a的值為10.b的值為20.交換兩個(gè)變量的值?

(有兩個(gè)杯子,都盛滿了水,怎樣交換兩個(gè)杯子中的水)

(1)使用傳統(tǒng)方式實(shí)現(xiàn)

varaint■10

varbint■20

vartempint

temp-a

a=b

b=temp

fmt.Printin(a,b)

(2)使用多重賦值的方式實(shí)現(xiàn)

a,b:=10,20

a,b=b,^:第二行沒(méi)有冒號(hào)

fmt.Printin(a,b)

多重賦值的方式交換兩個(gè)變量的值.比通過(guò)第三個(gè)變量來(lái)進(jìn)行變量交換更簡(jiǎn)單.代碼也少。

9:輸出格式

關(guān)于‘輸出?大家也都能夠理解是什么意思了,就是將數(shù)據(jù)信息打印在電腦屏幕上,,生活中也隨處可見(jiàn)輸出的場(chǎng)景

在我們GO語(yǔ)言中進(jìn)行輸出,用到我們前面所注解的兩個(gè)函數(shù):Print。和PnntlnO

這個(gè)兩個(gè)函數(shù)的區(qū)別就是Print。函數(shù)不換行.Println()換行輸出.

關(guān)于輸出這里有兩個(gè)問(wèn)題,需要給大家強(qiáng)調(diào)清楚。

(1)我們前面的程序中,已經(jīng)多次用到輸出.不管是采用Prim。.還是PrintlnQ,但是問(wèn)題是.每次輸出的數(shù)據(jù)結(jié)構(gòu)不清晰,

比較混亂。

例如如下程序:

,funcmain(){

a:=1

b:=10

c:=20

fmt.Printin(a,b,c)

}

該程序輸出的結(jié)果是1,10,20.如果我們現(xiàn)在讓另外一個(gè)程序員查看該結(jié)果,該程序員很難分清楚.1是來(lái)自哪個(gè)變量.

2是來(lái)自哪個(gè)變量,3來(lái)自哪個(gè)變鼻,除非該程序員閱讀代碼。但是.大家想一下,如果該程序的代碼量非常大,那

么該程序員閱讀代碼是否要花費(fèi)很長(zhǎng)的時(shí)間呢?所以,建議采用如下輸出:

/funcmain(){

,a:=1

fmt.Printin("a=",a)

雙引號(hào)內(nèi)的內(nèi)容會(huì)原樣輸出,這樣結(jié)構(gòu)比較清晰,注意與變量名之間用逗號(hào)分隔。

(3)除了使用Prin【ln()函數(shù)換行輸出以外,還有另外一個(gè)函數(shù)Printf()也可以實(shí)現(xiàn)換行輸出。示例如下.

5

6funcmain(){

7a1

8b:=20

M

9fmt.Printf(a=%d\n,b=%d",a,b)

}

運(yùn)行以后.發(fā)現(xiàn)確實(shí)換行了。這種輸出方式,就是格式化輸出,*d表示輸出的是一個(gè)整數(shù).第一個(gè)Kd會(huì)被變量a的值替

換,第二仲d會(huì)被變量b替換.其它類(lèi)型的輸出用什么去表示后面會(huì)給大家講解.An"表示換行。

有同學(xué)可能就問(wèn)了.這種換行輸出方式比較麻煩,但是如果一次性有結(jié)構(gòu)的輸出多個(gè)變量的值,Pmtln()輸出就會(huì)比較麻煩,

并且結(jié)構(gòu)也會(huì)感覺(jué)比較混亂,還是以上面的代碼為例,如下:

5/funcmain()(

6a:=1

b:=20

c:=30

H

fmt.PrintIn(a="ra,brc)

10)

11I

下面我們?cè)诮o大家演示函數(shù)Prinif()的輸出

5pfuncmain()

6a:=1

7b:=20

8c:=30

fmt.Printf("a=%d,b=%d,c=%d\n",a,b,c)

10}

通過(guò)對(duì)比發(fā)現(xiàn)PrinlfO函數(shù)一次性換行輸出多個(gè)變量值.結(jié)構(gòu)清晰,

10:接收輸入

前面我們所寫(xiě)的所有的程序,都是直接給變量賦值,但是很多情況下,我們希望用戶通過(guò)鍵盤(pán)輸入一個(gè)數(shù)值,存儲(chǔ)到某個(gè)變量

中.然后將該變量的值取出來(lái).進(jìn)行操作。我n日常生活中也經(jīng)常用到輸入的場(chǎng)景:

咱們?cè)阢y行ATM機(jī)器前取錢(qián)時(shí),肯定需要輸入密碼,對(duì)不?

那么怎樣才能讓程序知道咱們剛剛輸入的是什么呢??

大家應(yīng)該知道了,如果要完成ATM機(jī)取錢(qián)這件事情,需要先從鍵盤(pán)中輸入一個(gè)數(shù)據(jù),然后用一個(gè)變量來(lái)保存,是不是很好理解

軻!

那么我們GO語(yǔ)言怎樣接收用戶的鍵盤(pán)輸入呢'如下:

5

6funcmain(){

7varageint

fmt.PrintIn("詁輸入你的年齡”)

8

9fmt.Scanf&age)

fmt.PrintfX"a=%d",agel

在GO中我們用到了-fmf這個(gè)包中的Scanf()函數(shù)來(lái)接收用戶鍵盤(pán)輸入的數(shù)據(jù),當(dāng)程序執(zhí)行到Scanf()函數(shù)后,會(huì)停止往下執(zhí)行,

等待用戶的輸入,輸入完成后程序繼續(xù)往下執(zhí)行。在這里重點(diǎn)要注意的是Scanf()函數(shù)的書(shū)寫(xiě)格式,首先也要用“雙T,來(lái)表示輸

入的是一個(gè)整數(shù).輸入完整數(shù)后存儲(chǔ)到變Hage中,注意這里age變量前面一定要加上長(zhǎng)符號(hào),表示獲取內(nèi)存單元的地址

(前面我們說(shuō)的內(nèi)存存儲(chǔ)區(qū)域的編號(hào)).然后才能夠存儲(chǔ).

還有另外一種獲取用戶輸入數(shù)據(jù)的方式,如下:

5*funcmain(){

6varageint

fmt.Printin("請(qǐng)輸入你的生齡”)

fmt.Scan(&age)

fmt.Printf("a=%d",age)

通過(guò)Scan函數(shù)接收用戶輸入,這時(shí)可以省略掉Kd這種寫(xiě)法更簡(jiǎn)單

11:變量命名規(guī)范

在我們前面的編程中.我們定義變量時(shí)都是隨意進(jìn)行命名,但是在GO語(yǔ)言中.對(duì)變量的命名有一些規(guī)范性的要求.下面我們

看一下具體的要求。

(1)變量命名規(guī)范要求

名字必須以一個(gè)字母(Unicode字母)或下劃線開(kāi)頭,后面可以跟任意數(shù)量的字母、數(shù)字或下劃線。大寫(xiě)字母和小寫(xiě)

字母是不同的:heapSori和Heapsort是兩個(gè)不同的名字。

除了上面提到的規(guī)范要求以外,GO語(yǔ)言自己特有的,具有一定含義的一些字符.也不能作為變量名稱(chēng)。例如,前面

我們接觸到的func,fmt,print等等,這些都是GO自帶的,具有特殊含義的字符,我僅稱(chēng)為關(guān)鍵字。

breakdefaultfuncinterfaceselect

casedefergomapstruct

chanelsegotopackageswitch

constfallthroughifrangetype

continueforimportreturnvar

以上關(guān)鍵字都不能作為變量的名稱(chēng)C

此外,還有大約30多個(gè)預(yù)定義的名字,比如int和true等

truefalseiotanil

intint8inti6int32int64

uintuint8uintl6uint32uint64uintptr

float32float64complexl28complex64

boolbyterunestringerror

makelencapnewappendcopyclosedelete

complexrealimag

panicrecover

(2)下面的變量名稱(chēng)哪些正輛?

(3)見(jiàn)名知意

起一個(gè)有意義的名字.盡量做到看一眼就知道是什么意思(提高代碼可讀性)比如:名字就定義為name.定義學(xué)生用

student

(4)駝峰命名法

小駝峰式命名法(lowercamelcase)第一個(gè)單詞以小寫(xiě)字母開(kāi)始;第二個(gè)單詞的首字母大寫(xiě),例如:myName、aDog

大駝峰式命名法(uppercamelcase):每一個(gè)單字的首字母都采用大寫(xiě)字母,例如:FirstName,lasiName

不過(guò)在程序員中還有一種命名法比較流行.就是用下劃線:"來(lái)連接所有的單詞,比如send_buf

五:基礎(chǔ)數(shù)據(jù)類(lèi)型

前面我們寫(xiě)的程序中.用到的變量的類(lèi)型都是整型.但是在我們GO語(yǔ)言中,還有很多其它的類(lèi)蹩.

類(lèi)型名稱(chēng)長(zhǎng)度零值說(shuō)明

bool布爾類(lèi)型1false其值不為真即為假,不可以用數(shù)字代表

true或false

byte字節(jié)型10uint8別名

int,uint整型-0有符號(hào)32位或無(wú)符號(hào)64位

int8整型10-128-127,

uint8整型100-255

inti6整型20-32768~32767,

uintI6整型200~65535

int32整型40-2147483648到2147483647

uint32整型400到4294967295(42億)

int64整型80-9223372036854775808到92233720368547758070

uint64整型80至lj18446744073709551615(1844京)

float32浮點(diǎn)型40.0小數(shù)位精確到7位

float64浮點(diǎn)型80.0小數(shù)位精確到15位

string字符串1111utf-8字符串

下面我們看一下幾個(gè)非常重要的類(lèi)型,其它類(lèi)型隨著課程的深入.后面會(huì)給大家講解到

1:布爾類(lèi)型

在計(jì)算機(jī)中,我們用什么數(shù)據(jù)類(lèi)型來(lái)表示一句話的對(duì)錯(cuò),例如:在計(jì)算機(jī)中描述張三(20歲)比李四(18)小,這句話的結(jié)果?

布爾類(lèi)型的變量取值要么是真(true),要么是假(false).用bool關(guān)鍵字來(lái)進(jìn)行定義。示例如下:

〃1、聲明變fit沒(méi)有初始化,默認(rèn)值為false

7

8varabool

9fmt.Printin("aO=",a)

0

XI

1a-true

X1

2fmt.Printin(na=",a)

X1

I3

X〃2、自動(dòng)推導(dǎo)類(lèi)型

4

varb=false

15fmt.Printin("b=",b)

16

17c:=false

18fmt.Printin("c=",c)

指定格式的輸出:

funcmain(){

varbbool

b=true

,

fmt.Printf('b=%t"/b)

)}

布爾類(lèi)型主要用丁后面講解的條件判斷,關(guān)丁條件判斷,我們?cè)谶@里先舉個(gè)生活中的案例,大家可以理解下:

2:浮點(diǎn)型

6〃聲明變及

7varflfloat32

8fl=3.14

9fmt.PrintIn("fl=",fl)

10

11//自動(dòng)推導(dǎo)類(lèi)型

12f2:=3.14

13fmt.Println("f2="zf2)

14//float64存儲(chǔ)小數(shù)比f(wàn)loat32更準(zhǔn)確

有格式的輸入與輸出

5」funcmain(){

6〃聲明變量

7varflfloat32

8fmt.Scanf(**%f",&f1)

9fmt.Printffl)

10

111)

注意:varflfloat32

fl-12

f2:=12.0〃如果不加小數(shù)點(diǎn),f2會(huì)被推導(dǎo)為整型而不是浮點(diǎn)型

3:字符類(lèi)型

(1)字符基本輸入與輸出

所謂字符類(lèi)型是用單引號(hào)括起來(lái)的單個(gè)字符,關(guān)于字符的定義使用如下:

5/funcmain(){

6//聲明變成

7varchbyte//聲明字7

8ch='a*〃單/號(hào)卜字符

9fmt.Printfch)

10

輸入一個(gè)字符.如下所示:

5/funcmain(){

6〃聲明變址

7varchbyte//聲明字符類(lèi)型

8fmt.Scanf("%c",&ch)

9fmt.Printf("%c",ch)

10

111

(2)字符第二種輸入與輸出方式。

5/funcmain(){

6〃聲明變時(shí)

varchbyte〃聲明字符類(lèi)劇

8ch-97

,

9fmt.Printfrch=%c"/ch|l

.0

.1}

o

這里定義了,ch是一個(gè)字符類(lèi)型.鼠值卻是一個(gè)整數(shù)97.打印的結(jié)果是小寫(xiě)字符'a-.

原因是:計(jì)算機(jī)不能直接存儲(chǔ)字符類(lèi)型,只能轉(zhuǎn)成數(shù)字存儲(chǔ),但是為什么小寫(xiě)字符匕’,對(duì)應(yīng)的整數(shù)是97呢?因?yàn)?

計(jì)算機(jī)是根據(jù)‘ASCH1碼來(lái)存儲(chǔ)。:這里只是簡(jiǎn)單介紹ASCII)

ASCH表

(AmericanStandardCodeforInformationInterchange美國(guó)標(biāo)準(zhǔn)信息交換代碼)

ASCH技制字符|ASCII打印字符一

八~—《

000000010010I0011I_A01,0A0C-I0A101I~01100111

\LE____________0__________I___________】_____________________121314|5

抵四伯普的Ctrl£整字符解每學(xué)產(chǎn)Ctrl£馨鈉.+迅字符+i2U.zj+生字符常翔智利Ctri

M于行*1嚴(yán)U字符

APHE|數(shù)據(jù)便路轉(zhuǎn)義

0000P0*@NUL\0交線16A3248064@80P96'112p

0001111Q*ASOH標(biāo)題開(kāi)始17<81

AQDC1設(shè)備拽制133JS165AQsaii3q

001o|z2|.ABSTX正文開(kāi)始181

ARDC2設(shè)備拽制234”50266B82R9?b“4r1

0011133|VACED(正文結(jié)來(lái)19??

ASDC3設(shè)備技制3513

35#67C83S99C115s

0100144|.*DEOT傳綁瞇20f

ATDC4設(shè)備技制436S52468D84T100(|116t

0101|sS|AEEIQ查詢21§

AUNAK否定應(yīng)否37%S3§69E851'ide117u

0110卜6|4*FACK肯定應(yīng)與22一118VI

AVSYN同步空閑38&54670F86V102f

0111.7|?AGBEL\a嘀件23J

AWETO傳輸塊結(jié)束39'557103“9

71G87\VgW

1OOO|K81QAHBS\b遺格24t

AXCAN取清40(56872H??X104h120x

1001Id9O*>HT?橫向制奏25j>21yI

AYa介質(zhì)結(jié)束X)57973I89Y105i

IOIOIA10BAJLFin換行26—>122zI

*ZSUB替代42*58:74J90Z106j

1011|B116AKVI\v縱向制奏274—1231I

A[ESC>溢出43+59;75K91[107k

1100|c129ALFFtf換頁(yè)28124II

%PS文件分耐44,60<76L92\108]

1I

1101|D13J)AMCR\r回車(chē)29—

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論