版權(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ǔ)言是什么
,lGo是一種開(kāi)源的程序設(shè)計(jì)語(yǔ)言,它意在使得人們能夠方便地構(gòu)建簡(jiǎn)單、可靠、高效率的軟件”(來(lái)自go官網(wǎng)
)
我們程序員在開(kāi)發(fā)程序,開(kāi)發(fā)軟件時(shí)都會(huì)選擇一門編程語(yǔ)言,那么我們應(yīng)該怎樣進(jìn)行選擇呢?可能有同學(xué)會(huì)說(shuō),我
們要選擇一門簡(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++,但是這類編程語(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í)G0語(yǔ)言專門針
對(duì)多處理器(多核CPU,在這里可以給學(xué)生看一下windows下的多核CPU,)系統(tǒng)的程序進(jìn)行了優(yōu)化(讓每核CPU
都能夠執(zhí)行G0語(yǔ)言開(kāi)發(fā)的程序),這樣使用GO語(yǔ)言開(kāi)發(fā)的程序運(yùn)行的速度可以媲美C或C++開(kāi)發(fā)程序的速度。
1.2GO語(yǔ)言優(yōu)勢(shì)
工:運(yùn)行速度快,簡(jiǎn)單易學(xué)
2:薪水待遇高
GO開(kāi)發(fā)工程師北京丹楓科技有限公司4晾-朝陽(yáng)區(qū)2-2.5萬(wàn)/月
GO開(kāi)發(fā)工程師北京阿提拉科技有限公司4晾1-1.5萬(wàn)/月
區(qū)塊鏈開(kāi)發(fā)工程師(G。語(yǔ)言)4晾世紀(jì)互聯(lián)寬艘據(jù)中心有限公司4晾-朝陽(yáng)區(qū)2.5-3萬(wàn)/月
GO開(kāi)發(fā)工程師Adhub(醞)d晾-朝陽(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è)就是G。最大的特色,天生的支持并發(fā)。所謂并發(fā),所有正在運(yùn)行的程序輪流使用CPU,
每個(gè)程序允許占用CPU的時(shí)間非常短(比如10毫秒),這樣用戶根本感覺(jué)不出來(lái)CPU是在輪流為多個(gè)程序服務(wù),就好象
所有的程序都在不間斷地運(yùn)行一樣。并發(fā)好處就是可以運(yùn)行多個(gè)程序,并不卡頓。
1.3GO語(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)基本有所了解了,那么我相信大家迫不及待的想學(xué)習(xí)GO語(yǔ)言了,但
是我們?cè)诰唧w學(xué)習(xí)GO語(yǔ)言前,需要先安裝GO的開(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)下Go環(huán)境的安裝。
Windows下GO語(yǔ)言的環(huán)境安裝步驟如下:
Go安裝包下載網(wǎng)址:/download
有zip壓縮版和msi安裝版兩個(gè)按本下載。(這里使用msi安裝版,比較方便)。
運(yùn)行msi安裝文件,千萬(wàn)不要在安裝路徑中出現(xiàn)中文,一路Next。(關(guān)于安裝路徑在這里可以給學(xué)生重點(diǎn)強(qiáng)調(diào),安裝的位
置以及不能出現(xiàn)中文名稱)
3:第一個(gè)GO程序
下面我們就用IDE工具,開(kāi)發(fā)第一個(gè)GO程序。具體步驟如下:
1:選擇文件新建彈出如下對(duì)話框。
注意:程序名稱,和程序保存位置不能輸入中文
2:新建完成后,開(kāi)始輸入代碼。
1packagemain
2
3import"fmt"
4
5-1funcmain(){
fmt.Print("hellogo")
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í)必須寫清楚,客戶的信息管理
代碼到底是來(lái)自哪個(gè)商城,所以我可以這樣寫“import京東”,表示所使用的“客戶信息代碼”是來(lái)自“京東"的,那么"京東"
就是一個(gè)標(biāo)識(shí),也就是包。所以說(shuō),包就是一個(gè)標(biāo)識(shí),標(biāo)志著著你寫的GO代碼來(lái)自哪.這樣代碼管理非常清晰,使用也非常方
便。
那么后面隨著我們學(xué)習(xí)的深入,學(xué)習(xí)的代碼也越來(lái)越多,我們給大家去講解怎樣自己創(chuàng)建包,來(lái)管理代碼。創(chuàng)建包用到的就是
package.
但是,不管你創(chuàng)建多少個(gè)包,要想讓程序運(yùn)行,必須包含一個(gè)main包。如果缺少該包,程序是無(wú)法運(yùn)行的。
第三行代碼:import表示導(dǎo)入,"fmt”是包名.
不管是使用我們自己定義的包還是GO自帶都是通過(guò)import導(dǎo)入的,“fmt”是GO自帶的包,該包包含了怎樣將信息打印在電
腦屏幕上。注意包名要用""表不。
第五行代碼:表示程序的入口,程序就是從該位置開(kāi)始執(zhí)行的,就像是教室的門口一樣,注意該行代碼是固定的寫法,func與
main之間必須有空格,同時(shí)main后面必須帶小括號(hào),后面的一對(duì)大括號(hào)表示要完成的具體工作,也就是完成具體任務(wù)的代碼必
須寫在一對(duì)大括號(hào)內(nèi)。
func表示后面跟著的main是一個(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ù)名稱后面必須跟一對(duì)小括號(hào)。
第六行代碼:就是使用了fmt包(注意具體使用的時(shí)候不需要加上雙引號(hào))中的Print函數(shù),將要"hell。go"打印在屏幕上。
這行代碼要注意的是,fmt包與Print函數(shù)之間是用.(點(diǎn)連接的),該點(diǎn)是在半角輸入法狀態(tài)下輸入,同時(shí)Print函數(shù)第一個(gè)字母P
是大寫的,不能寫成小寫,也就是說(shuō)GO語(yǔ)言是區(qū)分大小寫的,有很多同學(xué)在這里容易出錯(cuò)。將要輸出的信息寫在Print函數(shù)的
括號(hào)內(nèi)(注意括號(hào)也是在半角狀態(tài)下輸入的),并且用雙引號(hào)包裹起來(lái)(雙引號(hào)也是半角狀態(tài)下輸入的)
3:代碼運(yùn)行
我們第一個(gè)GO程序已經(jīng)寫完了,那么我們寫的程序到底能否運(yùn)行呢?是否有錯(cuò)誤呢?下面我們執(zhí)行我們的程序,程序的執(zhí)行
分為兩步:
(1)編譯
編譯的操作步驟:點(diǎn)擊“編譯”菜單,選擇"Build"(或者直接按快捷鍵Ctrl+B).編譯的目的是檢查我們寫的代碼是否
出錯(cuò),如果沒(méi)有出錯(cuò),那么會(huì)提示“成功",并且在我們程序所在的目錄生成一個(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)將我們寫的第一個(gè)GO語(yǔ)言程序,執(zhí)行成功了,但是還有以下幾點(diǎn)內(nèi)容需要在給大家強(qiáng)調(diào)一下:
(1)強(qiáng)制左花括號(hào){的放置位置,如果把左花括號(hào){另起一行放置,這樣做的結(jié)果是Go編譯器報(bào)告編譯錯(cuò)誤。
(2)每行代碼占一行。
(3)如果我們?cè)谖覀円呀?jīng)成功的程序中,在加入一行輸入,應(yīng)該怎么加呢?直接輸入fmtRint(”aaaaa"),然后直接
執(zhí)“Run”,發(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)(需要翻墻):/
go中文社區(qū):https:〃
go中文在線文檔:https:〃/pkgdoc
三:注釋
1:注釋作用
在前面我們已經(jīng)寫過(guò)第一個(gè)G0程序了,該程序的功能很簡(jiǎn)單,代碼量不是很多,也就是幾行代碼。但是大家看下面這段代碼,
代碼量比我們寫的第一個(gè)程序代碼量多了很多,代碼多了以后,閱讀起來(lái)非常不容易。
packagemain
insert"fm
,ftmcmain()1
varn[10]int
vari,jint
fori=0;i<10;i++{
n[i]-i+100
forj=0;j<10;j++(
fmt.Printf("Element[%d]-%d\n",j,n[j])
接下來(lái),在看下面的代碼,由于在一些代碼行上有漢字,所以閱讀起來(lái)就很方便。
packagemain
2I
3impor't"fmt"
4
5£uncmain(){________________________________________________
6varn[10]int|/*n足-個(gè)為10的數(shù)外L*/一
7vari,jint
8
9|/*為數(shù)/In初J好評(píng)七/匕索*/|
10fori=0;i<10;i++{_______________________________
11n[i]=1+100]/*設(shè);置元術(shù)為i+100*/
12
13
14|/*輸日每個(gè)數(shù)組元索的值*/
15forj_0;j<10;j++r
16fmt.Printf("Element[%d]%d\n",j,n[j])
我們通過(guò)用自己熟悉的語(yǔ)言(例如,漢語(yǔ)),在程序中對(duì)某些代碼進(jìn)行標(biāo)注說(shuō)明,這就是注釋的作用,能夠大大增強(qiáng)程序
的可讀性。以后,在公司中做開(kāi)發(fā),其他程序員會(huì)經(jīng)常閱讀我們寫的代碼,當(dāng)然,我們也會(huì)經(jīng)常閱讀別的程序員寫的代碼,如
果代碼中加了注釋,那么閱讀起來(lái)就非常容易了。
2:注釋分類
(1)單行注釋
所謂單行注釋,就是每次給一行代碼加注釋,你可以在任何地方使用以〃開(kāi)頭的單行注釋。
fmt.Printin("hellogo")〃將信息輸出到屏幕上。
以〃開(kāi)頭,〃右邊的所有東西當(dāng)做說(shuō)明,而不是真正要執(zhí)行的程序,起輔助說(shuō)明作用
⑵多行注釋
若果代碼量比多,每行加注釋,比較麻煩,可以使用多行注釋。
5/funcmain(){
5//*
7以下兩行代碼都是將信息打印在屏幕上|
3*/
fmt.Printin("hellogo")
fmt.Printin("Iloveyou")
L)
除了給代碼加上說(shuō)明,用注釋以外,如果你寫的代碼不想讓計(jì)算機(jī)執(zhí)行,那么也可以加上注釋。
加了注釋后代碼不會(huì)被編譯執(zhí)行,這就是對(duì)已有的代碼進(jìn)行注銷。
(3)重點(diǎn)強(qiáng)調(diào)
以后寫程序要多加注釋,這是我們程序猿的專業(yè)和職業(yè)道德,不加注釋就是流氓。
四:變量
1:什么叫變量
在前面的講解案例中,我們是讓計(jì)算機(jī)輸出數(shù)據(jù)到屏幕上,那么有同學(xué)可能就要問(wèn)了,怎樣讓計(jì)算機(jī)保存我們通過(guò)鍵盤輸入的
數(shù)據(jù)呢?這就要用到變量了。
所謂的變量簡(jiǎn)單的理解就是計(jì)算機(jī)用來(lái)存儲(chǔ)數(shù)據(jù)的。我們可以理解變量就像我們?nèi)コ匈I商品時(shí)用到的購(gòu)物車,我們先將商品
從貨架上拿下來(lái),放到購(gòu)物車中,結(jié)賬時(shí)在從購(gòu)物車中取出商品。計(jì)算機(jī)通過(guò)變量來(lái)保存數(shù)據(jù)實(shí)際上將數(shù)據(jù)存儲(chǔ)到計(jì)算機(jī)的內(nèi)
存中,這里我們可以畫一個(gè)圖給大家理解一下。
內(nèi)存
rcc0x100010
100
0x1000001
弓貯0x00010001
計(jì)算機(jī)將內(nèi)存劃分成不同的區(qū)域,數(shù)據(jù)就是存儲(chǔ)在這些區(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ò)變量的方式來(lái)表示存儲(chǔ)的數(shù)據(jù),如下圖:
我們給每個(gè)存儲(chǔ)區(qū)域加上了Numberl,Number2,Name等符號(hào),這樣通過(guò)這些符號(hào)來(lái)存儲(chǔ)數(shù)據(jù),然后通過(guò)這些符號(hào)取出數(shù)據(jù)就
非常容易,方便了。這些符號(hào)就是變量。
2:變量類型
我們現(xiàn)在理解了變量可以用來(lái)存儲(chǔ)數(shù)據(jù),但是我們要存儲(chǔ)的數(shù)據(jù)類型是各種各樣的,例如:整數(shù),小數(shù),文本等等。所以我們
必須在定義變量時(shí)就要告訴計(jì)算機(jī),定義的變量存儲(chǔ)是什么類型的數(shù)據(jù)。那么在內(nèi)存中就可以根據(jù)不同的類型來(lái)開(kāi)辟不同的存
儲(chǔ)空間。
生活中關(guān)于“類型”的例子:
關(guān)于GO語(yǔ)言中的有哪些類型,我們后面會(huì)具體講解。下面我們先看一下怎樣聲明變量?
3:變量聲明
所謂聲明變量就是創(chuàng)建一個(gè)變量,并且指定該變量存儲(chǔ)什么類型的數(shù)據(jù)。
G。語(yǔ)言引入了關(guān)鍵字var,而類型信息放在變量名之后,示例如下:
1packagemain
2
3import"fmt
4
5funcmain(){
6fmt.Println(“測(cè)試變量定義”)
7小聲明格式var變量名類型,變晶聲明了,必須要使用
8//2、聲明整型變量,該變量默認(rèn)值為0
9//3、同一個(gè){}里,聲明的變量名是唯一的
10varaint
11fmt.Printin(Ma=",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í),就給變量賦值,這種方式就是變量的初始化。示例如下:
varbint=10<定義變量b同時(shí)將整數(shù)10賦值給b
fmt?Printin(b)
注意:在這里我們將"="符號(hào),讀作“賦值號(hào)”,不能讀作"等號(hào)'O
問(wèn)題:以下的程序輸出的結(jié)果是多少?
varcint=20
fmt.Println("c")
同時(shí)再次強(qiáng)調(diào)一下在這里輸出變量c的值,所以不能給變量c加上雙引號(hào)。
5:變量賦值
除了在定義變量時(shí),完成初始化以外,我們也可以在變量定義完后,再給變量賦值,也就是先聲明后賦值,示例如下:
注意:上面的輸出語(yǔ)句也可以只使用一個(gè)Printin函數(shù),具體如下:fmt.Println(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)類型
在給變量賦值時(shí),我們感覺(jué)非常麻煩,有沒(méi)有更簡(jiǎn)單的給變量賦值的方式,我們可以使用自動(dòng)推導(dǎo)類型,具體示例如下:
num:=30
fmt?Printin(num)
所謂自動(dòng)推導(dǎo)類型,就是不用通過(guò)var聲明變量,不用指定類型,直接在變量名后面跟“:”號(hào),同時(shí)完成賦值。那么GO會(huì)根
據(jù)所賦的值自動(dòng)推導(dǎo)出變量的類型。如果給num變量賦值為小數(shù),那么該變量的類型為小數(shù)類型(浮點(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
但是這種方式寫起來(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ǔ)法:
I,i,j:=1,2,3,4I
8:數(shù)據(jù)置換
到目前為止,我們已經(jīng)學(xué)習(xí)了什么是變量,變量的定義,以及變量的賦值。那么下面大家思考如下問(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)
⑵使用多重賦值的方式實(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。和Println()
這個(gè)兩個(gè)函數(shù)的區(qū)別就是Print。函數(shù)不換行,Phntln()換行輸出。
關(guān)于輸出這里有兩個(gè)問(wèn)題,需要給大家強(qiáng)調(diào)清楚。
(1)我們前面的程序中,已經(jīng)多次用到輸出,不管是采用Print。,還是PMtln(),但是問(wèn)題是,每次輸出的數(shù)據(jù)結(jié)構(gòu)不清晰,
比較混亂。
例如如下程序:
眉funcmain(){
a:=1
b:=10
c:=20
fmt.Printin(a,b,c)
)
I
該程序輸出的結(jié)果是L10,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)除了使用Println。函數(shù)換行輸出以外,還有另外一個(gè)函數(shù)Printf()也可以實(shí)現(xiàn)換行輸出。示例如下:
5funcmain(){
6a:=1
7b:=20
fmt.Printf('*a=%d\n,b=%dn,a,b)
9)
運(yùn)行以后,發(fā)現(xiàn)確實(shí)換行了。這種輸出方式,就是格式化輸出,%d,表示輸出的是一個(gè)整數(shù),第一個(gè)%d會(huì)被變量a的值替
換,第二個(gè)%d會(huì)被變量b替換,其它類型的輸出用什么去表示后面會(huì)給大家講解。"\n"表示換行。
有同學(xué)可能就問(wèn)了,這種換行輸出方式比較麻煩,但是如果一次性有結(jié)構(gòu)的輸出多個(gè)變量的值,Println()輸出就會(huì)比較麻煩,
并且結(jié)構(gòu)也會(huì)感覺(jué)比較混亂,還是以上面的代碼為例,如下:
5/funcmain(){
6a:=1
7b:=20
8c:=30
nn
fmt.Printin("a=",a,",b="/b,,c=,c)
10}
11I
下面我們?cè)诮o大家演示函數(shù)Printf()的輸出:
5kfuncmain(){
6a:=1
7b:=20
8c:=30
9fmt.Printf('*a=%dzb=%d,c=%d\n",a,b,c)
10
通過(guò)對(duì)比發(fā)現(xiàn)Phntf()函數(shù)一次性換行輸出多個(gè)變量值,結(jié)構(gòu)清晰。
10:接收輸入
前面我們所寫的所有的程序,都是直接給變量賦值,但是很多情況下,我們希望用戶通過(guò)鍵盤輸入一個(gè)數(shù)值,存儲(chǔ)到某個(gè)變量
中,然后將該變量的值取出來(lái),進(jìn)行操作。我們?nèi)粘I钪幸步?jīng)常用到輸入的場(chǎng)景:
咱們?cè)阢y行ATM機(jī)器前取錢時(shí),肯定需要輸入密碼,對(duì)不?
那么怎樣才能讓程序知道咱們剛剛輸入的是什么呢??
大家應(yīng)該知道了,如果要完成ATM機(jī)取錢這件事情,需要先從鍵盤中輸入一個(gè)數(shù)據(jù),然后用一個(gè)變量來(lái)保存,是不是很好理解
?。?/p>
那么我們GO語(yǔ)言怎樣接收用戶的鍵盤輸入呢?如下:
q
5funcmain(){
6varageint
7fmt.Printin(”請(qǐng)輸入你的年齡”)
fmt.Scanf(**%dn,&age)
9fmt.PrintfJ.',a=%dn,agej_
在GO中我們用到了“fmt”這個(gè)包中的Scanf()函數(shù)來(lái)接收用戶鍵盤輸入的數(shù)據(jù)。當(dāng)程序執(zhí)行到Scanf()函數(shù)后,會(huì)停止往下執(zhí)行,
等待用戶的輸入,輸入完成后程序繼續(xù)往下執(zhí)行。在這里重點(diǎn)要注意的是Scanf()函數(shù)的書寫格式,首先也要用寫d”,來(lái)表示輸
入的是一個(gè)整數(shù),輸入完整數(shù)后存儲(chǔ)到變量age中,注意這里age變量前面一定要加上“&”符號(hào),表示獲取內(nèi)存單元的地址
(前面我們說(shuō)的內(nèi)存存儲(chǔ)區(qū)域的編號(hào)),然后才能夠存儲(chǔ)。
還有另外一種獲取用戶輸入數(shù)據(jù)的方式,如下:
5funcmain(){
6varageint
7fmt.Printin("請(qǐng)輸入你的年齡”)
8fmt?Scan(&age)
9fmt.Printf("a=%d",age)
通過(guò)Scan函數(shù)接收用戶輸入,這時(shí)可以省略掉知,這種寫法更簡(jiǎn)單。
11:變量命名規(guī)范
在我們前面的編程中,我們定義變量時(shí)都是隨意進(jìn)行命名,但是在GO語(yǔ)言中,對(duì)變量的命名有一些規(guī)范性的要求,下面我們
看一下具體的要求。
(1)變量命名規(guī)范要求
名字必須以一個(gè)字母(Unicode字母)或下劃線開(kāi)頭,后面可以跟任意數(shù)量的字母、數(shù)字或下劃線。大寫字母和小寫
字母是不同的:heapSort和Heapsort是兩個(gè)不同的名字。
除了上面提到的規(guī)范要求以外,GO語(yǔ)言自己特有的,具有一定含義的一些字符,也不能作為變量名稱。例如,前面
我們接觸到的func,fmt,phnt等等,這些都是GO自帶的,具有特殊含義的字符,我們稱為關(guān)鍵字。
breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar
以上關(guān)鍵字都不能作為變量的名稱。
此外,還有大約30多個(gè)預(yù)定義的名字,比如int和true等
truefalseiotanil
intint8intl6int32int64
uintuint8uintl6uint32uint64uintptr
float32float64complexl28complex64
boolbyterunestringerror
makelencapnewappendcopyclosedelete
complexrealimag
panicrecover
(2)下面的變量名稱哪些正確?
principal$lastnamezipcode
123ratediscount%cost_price
marks_3
(3)見(jiàn)名知意
起一個(gè)有意義的名字,盡量做到看一眼就知道是什么意思(提高代碼可讀性)比如:名字就定義為name,定義學(xué)生用
student
(4)駝峰命名法
小駝峰式命名法(lowercamelcase):第一個(gè)單詞以小寫字母開(kāi)始;第二個(gè)單詞的首字母大寫,例如:myName、aDog
大駝峰式命名法(uppercamelcase):每一個(gè)單字的首字母都采用大寫字母,例如:FirstName、LastName
不過(guò)在程序員中還有一種命名法比較流行,就是用下劃線來(lái)連接所有的單詞,比如send_buf
五:基礎(chǔ)數(shù)據(jù)類型
前面我們寫的程序中,用到的變量的類型都是整型,但是在我們GO語(yǔ)言中,還有很多其它的類型,
類型名稱長(zhǎng)度零值說(shuō)明
bool布爾類型1false其值不為真即為假,不可以用數(shù)字代表
true或false
byte字節(jié)型10uint8另(J名
int,uint整型-0有符號(hào)32位或無(wú)符號(hào)64位
int8整型10-128~127,
uint8整型100-255
inti6整型20-32768?32767,
uint16整型200?65535
int32整型40-2147483648到2147483647
uint32整型400到4294967295(42億)
int64整型80-9223372036854775808到92233720368547758070
uint64整型80到18446744073709551615(1844京)
float32浮點(diǎn)型40.0小數(shù)位精確到7位
float64浮點(diǎn)型80.0小數(shù)位精確到15位
string字符串II|?utf-8字符串
下面我們看一下幾個(gè)非常重要的類型,其它類型隨著課程的深入,后面會(huì)給大家講解到。
1:布爾類型
在計(jì)算機(jī)中,我們用什么數(shù)據(jù)類型來(lái)表示一句話的對(duì)錯(cuò),例如:在計(jì)算機(jī)中描述張三(20歲)比李四Q8)小,這句話的結(jié)果?
布爾類型的變量取值要么是真(true),要么是假(false),用bool關(guān)鍵字來(lái)進(jìn)行定義。示例如下:
6//1>聲明變量,沒(méi)有初始化,默認(rèn)值為false
7varabool
8fmt.Printin("aO=",a)
9
10a=true
11fmt.Printin(Ha=",a)
12
13//2、自動(dòng)推導(dǎo)類型
14varb=false
15fmt.Printin(,rb=",b)
16
17c:=false
18fmt.Printin(Mc=",c)
指定格式的輸出:
)/funcmain(){
varbbool
b=true
fmt.Printf("b=%t",b)
布爾類型主要用于后面講解的條件判斷,關(guān)于條件判斷,我們?cè)谶@里先舉一個(gè)生活中的案例,大家可以理解一下:
2:浮點(diǎn)型
61//聲明變量
varflfloat32
8fl=3.14
9fmt.Println(ufl=",fl)
10
11//自動(dòng)推導(dǎo)類型
12f2:=3.14
nH
13fmt.Println(f2=zf2)
14//f1oat64存儲(chǔ)小數(shù)比f(wàn)loat32更準(zhǔn)確
有格式的輸入與輸出
5/funcmain(){
6〃聲明變量
7varflfloat32
,l
8fmt.Scanf(%fn/&fl)
,,,,
9fmt.Printf(fl=%fzfl)
10
11}
注意:varfIfloat32
fl=12
f2;=12Q〃如果不加小數(shù)點(diǎn),f2會(huì)被推導(dǎo)為整型而不是浮點(diǎn)型
3:字符類型
(1)字符基本輸入與輸出
所謂字符類型是用單引號(hào)括起來(lái)的單個(gè)字符,關(guān)于字符的定義使用如下:
5/funcmain(){
6〃聲明變量
7varchbyte//聲明字符類型
8ch=〃單引引,字符
9fmt.Printfch)
10)
輸入一個(gè)字符,如下所示:
5/funcmain(){
6〃聲明變量
varchbyte//聲明字符類型
nn
fmt.Scanf(%cz&ch)
fmt.Printfch)
10
111
(2)字符第二種輸入與輸出方式。
5/funcmain(){
6〃聲明變量
varchbyte//小明字符類型
8ch=97
9fmt.PrintfX"ch=%cn,ch|)_
.0
.1)
這里定義了,ch是一個(gè)字符類型,賦值卻是一個(gè)整數(shù)97,打印的結(jié)果是小寫字符‘a(chǎn)1.
原因是:計(jì)算機(jī)不能直接存儲(chǔ)字符類型,只能轉(zhuǎn)成數(shù)字存儲(chǔ),但是為什么小寫字符T,對(duì)應(yīng)的整數(shù)是97呢?因?yàn)?
計(jì)算機(jī)是根據(jù)‘ASCII'碼來(lái)存儲(chǔ)。(這里只是簡(jiǎn)單介紹ASCII)
ASCH表
(AmericanStandardCodeforInformationInterchange美國(guó)標(biāo)準(zhǔn)信息交換代碼)
、高四位ASCII控制字符ASCII打印字符
00000001001000110100010101100111
01234567
+進(jìn)代轉(zhuǎn)義+進(jìn)代轉(zhuǎn)義+進(jìn)+進(jìn)+進(jìn)+進(jìn)+進(jìn)+進(jìn)
字符Ctrl字符解釋字符Ctrl字符解釋字符字符字符字符字符字符Ctrl
低四位\制*字符制碼字符制制制制制制
、
000000A@NUL\o空字符16?APDLE數(shù)據(jù)鏈路轉(zhuǎn)義3248064@80P96112P
000111?AASOH標(biāo)題開(kāi)始17?AQDC1設(shè)備控制133!49165A81Q97a113q
001022■ABSTX正文開(kāi)始18tARDC2設(shè)備控制234ft50266B82R98b114r
001133▼ACETX正文結(jié)束19!!ASDC3設(shè)備控制335#51367C83S99c115s
010044ADEOT傳輸結(jié)束20ATDC4設(shè)備控制436$52468D84T100d116t
010155*AEENQ查詢21§AUNAK否定應(yīng)答37%53569E85U101e117u
011066AAFACK肯定應(yīng)答22—AVSYN同步空閑38&54670F86V102f118V
011177?AGBEL\a響鈴231AWETB傳輸塊結(jié)束3955771G87W103g119w
100088aAHBS\b退格24tAXCAN取消40(56872H88X104h120X
100199oAlHT\t橫向制表25AYEH介質(zhì)結(jié)束41)57973I89Y105i121y
AA*
1010A10sJLF\n換行26—>ZSUB替代4258:74J90Z106,i122z
1011B11dAKVT\v縱向制表27<―A[ESC\e溢出43+59975K91[107k123{
ALFF1f換頁(yè)A\FS文件分隔符\
1100C12928L44960<76L9210811241
1101D13pAMCR\r回車29一A]GS組分隔符45-61=77M931109m125}
AA
1110E14ANSO移出30▲RS記錄分隔符46?62>78N94A110n126?
ABackspace
叵15?:I移入A-US單元分隔符9
1111*"。31▼47/6379O95111o1270代碼:DEL
注:表中的ASCH字符可以用“Alt+小鍵盤上的數(shù)字鍵”方法輸入。2013/08/08
注意強(qiáng)調(diào):
5/funcmain(){
6//聲明變量
7varchbyte〃聲明字符婁生輸出指定必須%c,
8ch=97否則輸出的;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型城鎮(zhèn)化項(xiàng)目宿舍建設(shè)承包合同4篇
- 2024銅門制安合同糾紛解決協(xié)議
- 2025年度醫(yī)院感染控制中心建設(shè)與承包合同4篇
- 2025年度智慧社區(qū)建設(shè)項(xiàng)目承包合作協(xié)議范文4篇
- 2025年度出租車行業(yè)駕駛員職業(yè)保險(xiǎn)合作協(xié)議3篇
- 2025年度智能車庫(kù)使用權(quán)轉(zhuǎn)讓合同與范本4篇
- 2025年度智能化車庫(kù)租賃服務(wù)合同范本4篇
- 2024版熟石灰購(gòu)銷協(xié)議范本
- 2025年度危險(xiǎn)廢物承包裝卸處理協(xié)議4篇
- 2025年度智能穿戴設(shè)備租賃與健康管理服務(wù)合同4篇
- 二零二五年度無(wú)人駕駛車輛測(cè)試合同免責(zé)協(xié)議書
- 北京市海淀區(qū)2024-2025學(xué)年高一上學(xué)期期末考試歷史試題(含答案)
- 常用口服藥品的正確使用方法
- 2025年湖北華中科技大學(xué)招聘實(shí)驗(yàn)技術(shù)人員52名歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年鉆探工程勞務(wù)協(xié)作協(xié)議樣式版B版
- 《心肺復(fù)蘇機(jī)救治院內(nèi)心搏驟?;颊咦o(hù)理專家共識(shí)》解讀
- 計(jì)算機(jī)二級(jí)WPS考試試題
- 智聯(lián)招聘行測(cè)題庫(kù)及答案
- 前程無(wú)憂測(cè)評(píng)題庫(kù)及答案
- 2023中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)-注射相關(guān)感染預(yù)防與控制
- 超潔凈管道(CL-PVC)施工技術(shù)
評(píng)論
0/150
提交評(píng)論