




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年CPMM知識(shí)梳理試題及答案
- 2025年高純氧化鋁絕緣材料項(xiàng)目發(fā)展計(jì)劃
- 2025年專(zhuān)用小麥新品種合作協(xié)議書(shū)
- 物流師考試必看試題及答案
- 解析2024年CPSM試題變化試題及答案
- 人體內(nèi)分泌系統(tǒng)的調(diào)節(jié)機(jī)制試題及答案
- 廣西壯族自治區(qū)百色市田陽(yáng)縣田陽(yáng)高中2025屆高三第二次調(diào)研化學(xué)試卷含解析
- 辨析CPSM試題及答案的奧秘
- 備考技巧:2024年CPMM試題及答案
- 實(shí)踐總結(jié)國(guó)際物流師試題及答案
- 2022年江蘇省無(wú)錫市中考地理試題及參考答案
- Z世代消費(fèi)態(tài)度洞察報(bào)告
- 水電站監(jiān)理部帷幕灌漿培訓(xùn)講義ppt(18頁(yè))
- 招聘求職簡(jiǎn)歷制作表格模板可編輯下載 精品面試簡(jiǎn)歷模板 單頁(yè)簡(jiǎn)歷優(yōu)雅簡(jiǎn)約單頁(yè)16
- 服務(wù)質(zhì)量控制QoSPPT課件[通用]
- 鐵路項(xiàng)目橋梁墩臺(tái)身施工方案
- 特種設(shè)備臺(tái)賬格式模板【新版】
- 油田項(xiàng)目部職工大會(huì)行政工作報(bào)告(終稿)
- 管理人員進(jìn)車(chē)間安全事項(xiàng)
- (完整版)筏板基礎(chǔ)施工方案
- 橋架一點(diǎn)通大全
評(píng)論
0/150
提交評(píng)論