




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、一:基礎(chǔ)二:初識Go 語言1:GO 語言介紹1.1GO 語言是什么“Go 是一種開源的程序設(shè)計語言,它意在使得人們能夠方便地構(gòu)建簡單、可靠、高效率的軟件”(來自 go 官網(wǎng))我們程序員在開發(fā)程序,開發(fā)軟件時都會選擇一門編程語言,那么我們應(yīng)該怎樣進行選擇呢?可能有同學(xué)會說,我們要選擇一門簡單的,容易學(xué)習(xí)的,而且開發(fā)效率高的,能夠在很短的時間內(nèi)開發(fā)完成一個軟件,這樣會非常的滿意,能夠升職加薪,Python 語言或者 Ruby 語言就非常適合這種快速開發(fā)。但是問題是,用這種語言開發(fā)的軟件,當用戶量多了,運行的速度會非常慢,給人的感覺就是非???,大家想一下這種軟件還有人愿意使用嗎?
2、能又有同學(xué)說了,我們要學(xué)習(xí)運行速度快的編程語言,例如 C 或者是 C+,但是這類編程語言學(xué)習(xí)難度是非常大的。那么有沒有一種編程語言,學(xué)習(xí)非常簡單,開發(fā)速度非??欤_發(fā)出的軟件電腦運行速度非??炷兀坑?,就是我們今天開始學(xué)習(xí)的GO 語言。GO 語言借鑒了Python 等其它編程語言簡單,易學(xué),生產(chǎn)效率高,同時 GO 語言專門針對多處理器(多核 CPU,在這里可以給學(xué)生看一下 windows 下的多核 CPU,)系統(tǒng)的程序進行了優(yōu)化(讓每核 CPU都能夠執(zhí)行GO 語言開發(fā)的程序),這樣使用 GO 語言開發(fā)的程序運行的速度可以媲美 C 或C+開發(fā)程序的速度。GO 語言優(yōu)勢1.21:運行速度快,簡單易學(xué)
3、2:薪水待遇高3:適合開發(fā)4:跨平臺5:豐富的標準庫(指令),Go 目前已經(jīng)內(nèi)置了大量的庫,特別是網(wǎng)絡(luò)庫非常強大(開發(fā)飛秋軟件)6:Go 里面也可以直接包含C 代碼,利用現(xiàn)有的豐富的 C 庫7:語言層面支持并發(fā),這個就是 Go 最大的特色,天生的支持并發(fā)。所謂并發(fā),所有正在運行的程序輪流使用 CPU,每個程序占用CPU 的時間非常短(比如 10 毫秒),這樣用戶根本感覺不出來 CPU 是在輪流為多個程序服務(wù),就好象所有的程序都在不間斷地運行一樣。并發(fā)好處就是可以運行多個不。1.3 GO 語言能干什么1:網(wǎng)絡(luò)編程,這一塊目前應(yīng)用最廣,例如開發(fā)。2:服務(wù)器編程,例如:處理日志,處理文件。(在開發(fā)的
4、過都會涉及到)3:開發(fā)2:環(huán)境安裝前面已經(jīng)對GO 語言做了一個簡單的介紹,相信大家也已經(jīng)基本有所了解了,那么我相信大家迫不及待的想學(xué)習(xí) GO 語言了,但是我們在具體學(xué)習(xí)GO 語言前,需要先安裝GO 的開發(fā)環(huán)境,只有把GO 的開發(fā)環(huán)境安裝好了,才能有 GO 語言的指令來開發(fā)網(wǎng)站,飛秋等等軟件。也就是所謂的環(huán)境安裝,就是將 GO 語言的指令都安裝在你的電腦上,那么你在開發(fā)軟件的時候就可以直接用了。GO 環(huán)境的安裝分為windows 系統(tǒng)的安裝和 linux 系統(tǒng)的安裝,我們基礎(chǔ)班先學(xué)習(xí) windows 下的安裝,就業(yè)班學(xué)習(xí) linux系統(tǒng)下Go 環(huán)境的安裝。Windows 下GO 語言的環(huán)境安裝步
5、驟如下:Go 安裝包:有 zip 壓縮版和msi 安裝版兩個按本。(這里使用 msi 安裝版,比較方便)。運行 msi 安裝文件,千萬不要在安裝路徑中出現(xiàn)中文,一路 Next。(關(guān)于安裝路徑在這里可以給學(xué)生重點強調(diào),安裝的位置以及不能出現(xiàn)中文名稱)3:第一個 GO 程序下面我們就用IDE 工具,開發(fā)第一個GO 程序。具體步驟如下:1:選擇文件->新建 彈出如下框。注意:程序名稱,和程序保存位置不能輸入中文2:新建完成后,開始輸入代碼。第一行:每個Go 源代碼文件的開頭都是一個 package,表示該Go 代碼所屬的包。GO 語言中是通過對代碼進行管理的。那么什么是包呢?我通過一個例子來解
6、釋一下包的概念。例一家公司叫“京東“”,該公司有一個項目叫“京東網(wǎng)上商城”,該項目下面有管理“”的代碼,另外一家公司叫“淘寶”,該公司也有一個項目叫“淘寶網(wǎng)上商城”,該項目下面也有管理的“”的代碼,我開發(fā)的“客戶管理軟件”,既要用到“京東”的管理代碼,也要用到“淘寶”的管理代碼,為了能夠很好的區(qū)分,我們在使用時必須寫清楚,客戶的信息管理代碼到底是來自哪個商城,所以我可以這樣寫“import 京東”,表示所使用的“代碼”是來自“京東”的,那么“京東”就是一個標識,也就是包。所以說,包就是一個標識,標志著著你寫的GO 代碼來自哪.這樣代碼管理非常清晰,使用也非常方便。那么后面隨著我們學(xué)習(xí)的深入,學(xué)
7、習(xí)的代碼也越來越多,我們給大家去講解怎樣創(chuàng)建管理代碼。創(chuàng)建包用到的就是package.但是,不管你創(chuàng)建多少個包,要想讓程序運行,必須包含一個 main 包。如果缺少該包,程序是無法運行的。第三行代碼:import 表示導(dǎo)入,“fmt”是.不管是使用我們定義的包還是 GO 自帶都是通過 import 導(dǎo)入的,“fmt”是 GO 自帶的包,該含了怎樣將信息打印在電腦屏幕上。注意要用“”表示。第五行代碼:表示程序的,程序就是從該位置開始執(zhí)行的,就像是教室的樣,注意該行代碼是固定的寫法,func 與main 之間必須有空格,同時 main 后面必須帶小括號,后面的一對大括號表示要完成的具體工作,也就是
8、完成具體任務(wù)的代碼必須寫在一對大括號內(nèi)。func 表示后面跟著的main 是一個函數(shù),函數(shù)必須有一對小括號。什么是函數(shù)呢?現(xiàn)在大家可以先理解與我們在數(shù)學(xué)中學(xué)到的函數(shù)是一樣的,都是實現(xiàn)某個具體的功能,例如我們學(xué)習(xí)的三角函數(shù)等。Main 函數(shù)實現(xiàn)的就是功能。再次強調(diào)一下,GO語言中的函數(shù)前面必須加上func 這個單詞,而且函數(shù)名稱后面必須跟一對小括號。第六行代碼:就是使用了fmt 包(注意具體使用的時候不需要加上雙引號)中的Print 函數(shù),將要“hello go” 打印在屏幕上。這行代碼要注意的是,fmt 包與Print 函數(shù)之間是用(點連接的),該點是在半角輸入法狀態(tài)下輸入,同時 Print
9、函數(shù)第一個字母P 是大寫的,不能寫成小寫,也就是說GO 語言是區(qū)分大小寫的,有很多同學(xué)在這里容易出錯。將要輸出的信息寫在 Print 函數(shù)的括號內(nèi)(注意括號也是在半角狀態(tài)下輸入的),并且引號包裹起來(雙引號也是半角狀態(tài)下輸入的)3:代碼運行我們第一個 GO 程序已經(jīng)寫完了,那么我們寫的程序到底能否運行呢?是否有錯誤呢?下面我們執(zhí)行我們的程序,程序的執(zhí)行分為兩步:(1)編譯編譯的操作步驟:點擊 “編譯” 菜單,選擇 “Build” (或者直接按快捷鍵Ctrl+B).編譯的目的是檢查我們寫的代碼是否出錯,如果沒有出錯,那提示“”,并且在我們程序所在的目錄生成一個.exe 文件,該文件就是可執(zhí)行文件
10、。如果出錯那顯示錯誤信息,并且生成.exe 文件(2)執(zhí)行編譯操作完成后,我們就可以執(zhí)行我們的代碼了,選擇“編譯”菜單中的”Run”,執(zhí)行。執(zhí)行的就是編譯所生成的.exe文件。這時,有同學(xué)可能就會問,如果我們不執(zhí)行“Build”,直接執(zhí)行”Run”,可以嗎?不可以,因為不執(zhí)行”Build”就無法生成”.exe”文件,那么也就無法執(zhí)行。最后,我們?yōu)榱朔奖愀咝Э梢赃x擇“Run”,這個選項,將編譯與執(zhí)行放在一起操作。4:其它注意事項現(xiàn)在我們已經(jīng)將我們寫的第一個GO 語言程序,執(zhí)行了,但是還有以下幾點內(nèi)容需要在給大家強調(diào)一下:(1)強制括號的放置位置,如果把括號另起一行放置,這樣做的結(jié)果是Go 編譯器
11、報告編譯錯誤。(2)每行代碼占一行。(3)如果我們在我們已經(jīng)的,在加入一行輸入,應(yīng)該怎么加呢?直接輸入 fmt.Print("aaaaa"),然后直接執(zhí)”Run”,發(fā)現(xiàn)并沒有新的內(nèi)容輸出,是什么?應(yīng)該怎么做?(4)關(guān)于換行輸出的問題,前面的輸出都沒有換行,那么怎樣進行換行輸出呢?5:總結(jié)對第一個GO 程序進行總結(jié)。4:學(xué)習(xí)資料Go 語言官網(wǎng)(需要go 中文社區(qū):):go 中文文檔:三:注釋1:注釋作用在前面我們已經(jīng)寫過第一個GO 程序了,該程序的功能很簡單,代碼量不是很多,也就是幾行代碼。但是大家看下面這段代碼,代碼量比我們寫的第一個程序代碼量多了很多,代碼多了以后,閱讀起
12、來非常不容易。接下來,在看下面的代碼,由于在一些代碼行上有漢字,所以閱讀起來就很方便。我們通過用熟悉的語言(例如,漢語),在對某些代碼進行標注說明,這就是注釋的作用,能夠大大增強程序的可讀性。以后,在公司中做開發(fā),其他程序員會經(jīng)常閱讀我們寫的代碼,當然,我們也會經(jīng)常閱讀別的程序員寫的代碼,如果代碼中加了注釋,那么閱讀起來就非常容易了。2:注釋分類(1) 單行注釋所謂單行注釋,就是每次給一行代碼加注釋,你可以在任何地方使用以 / 開頭的單行注釋。以/開頭,/右邊的所有東西當做說明,而不是真正要執(zhí)行的程序,起輔助說明作用(2)多行注釋若果代碼量比多,每行加注釋,比較麻煩,可以使用多行注釋。除了給代
13、碼加上說明,用注釋以外,如果你寫的代碼不想讓計算機執(zhí)行,那么也可以加上注釋。加了注釋后代碼(3)重點強調(diào)被編譯執(zhí)行,這就是對已有的代碼進行注銷。以后寫程序要多加注釋,這是我們的專業(yè)和職業(yè)道德,不加注釋就是。四:變量1:什么叫變量在前面的講解案例中,我們是讓計算機輸出數(shù)據(jù)到屏幕上,那么有同學(xué)可能就要問了,怎樣讓計算機保存我們通過鍵盤輸入的數(shù)據(jù)呢?這就要用到變量了。所謂的變量簡單的理解就是計算機用來數(shù)據(jù)的。我們可以理解變量就像我們?nèi)コ匈I商品時用到的購物車,我們先將商品從貨架上拿下來,放到購物車中,結(jié)賬時在從購物車中取出商品。計算機通過變量來保存數(shù)據(jù)實際上將數(shù)據(jù)到計算機的內(nèi)存中,這里我們可以畫一個
14、圖給大家理解一下。計算機將內(nèi)存劃分成不同的區(qū)域,數(shù)據(jù)就是在這些區(qū)域中,那么怎樣從這些區(qū)域中將數(shù)據(jù)取出來呢?計算機將每塊區(qū)域都加上了一串數(shù)字,作為編號。通過該編號就可以將數(shù)據(jù)取出來了,但是問題是,這一串數(shù)字對我們程序員來說是非常難記憶的,為了解決這個問題,我們可以通過變量的方式來表示的數(shù)據(jù),如下圖:我們給每個區(qū)域加上了 Number1,Number2,Name 等符號,這樣通過這些符號來數(shù)據(jù),然后通過這些符號取出數(shù)據(jù)就非常容易,方便了。這些符號就是變量。2:變量類型我們現(xiàn)在理解了變量可以用來數(shù)據(jù),但是我們要的數(shù)據(jù)類型是各種各樣的,例如:整數(shù),小數(shù),文本等等。所以我們必須在定義變量時就要告訴計算機
15、,定義的變量是什么類型的數(shù)據(jù)。那么在內(nèi)存中就可以根據(jù)不同的類型來開辟不同的存儲空間。生活中關(guān)于“類型“的例子:關(guān)于GO 語言中的有哪些類型,我們后面會具體講解。下面我們先看一下怎樣變量?3:變量所謂變量就是創(chuàng)建一個變量,并且指定該變量什么類型的數(shù)據(jù)。Go 語言引入了關(guān)鍵字var,而類型信息放在變量名之后,示例如下:注意:這里的輸出是先將變量a 的值取出來,然后在打印在屏幕上。所以不能給 a 這個變量加上引號。4:變量初始化現(xiàn)在我們雖然已經(jīng)完成變量的定義了,但是該變量中的值,并不是我們想要的,我們希望變量中的是我們想要的值,應(yīng)該怎么辦?我們可以在定義變量時,就給變量賦值,這種方式就是變量的初始化
16、。示例如下:注意:在這里”=”符號,讀作“賦值號”,不能讀作“等號”。問題:以下的程序輸出的結(jié)果是多少?var c int =20fmt.Println(“c”)同時再次強調(diào)一下在這里輸出變量c 的值,所以不能給變量 c 加上雙引號。5:變量賦值除了在定義變量時,完成初始化以外,我們也可以在變量定義,再給變量賦值,也就是先后賦值,示例如下:注意:上面的輸出語句也可以只使用一個Println 函數(shù),具體如下:fmt.Println(a,b),中間用逗號進行分割問題 1:以下程序的輸出結(jié)果是多少?問題 2:以下程序的輸出結(jié)果是多少?結(jié)論:變量可以重復(fù)賦值,一旦給一個變量賦了新值,那么變量中的老值就
17、不復(fù)存在了6:自動推導(dǎo)類型在給變量賦值時,我們感覺非常麻煩,有沒有更簡單的給變量賦值的方式,我們可以使用自動推導(dǎo)類型,具體示例如下:所謂自動推導(dǎo)類型,就是不用通過 var變量,不用指定類型,直接在變量名后面跟”:”號,同時完成賦值。那么 GO 會根據(jù)所賦的值自動推導(dǎo)出變量的類型。如果給num 變量賦值為小數(shù),那么該變量的類型為小數(shù)類型(浮點)。通過比較,我們發(fā)現(xiàn)這種方式比前面的賦值方式要簡單方便。這種方式,也是我們以后開發(fā)過最常用的方式。7:多重賦值變量(1)多重賦值在上面的講解中,我們給變量num 賦值,采用了自動推導(dǎo)的方式,如果想一次使用自動推導(dǎo)的方式,給多個變量賦值,應(yīng)該怎樣實現(xiàn)呢?具體
18、如下:但是這種方式寫起來非常的復(fù)雜,可以用如下的方式進行簡化:將 1 的值賦值給a,將 10 的值賦值給b,將 30 的值賦值給 c.(2)變量_變量,丟棄數(shù)據(jù)不進行處理, _變量配合函數(shù)返回值使用才有價值,目前大家只需要知道其語法,后面學(xué)到函數(shù)時,我們在強調(diào)變量的使用場景。現(xiàn)在我們先看一下變量的語法8:數(shù)據(jù)置換到目前為止,我們已經(jīng)學(xué)習(xí)了什么是變量,變量的定義,以及變量的賦值。那么下面大家思考如下問題:有兩個變量a 和b, a 的值為 10,b 的值為 20,交換兩個變量的值?(有兩個杯子,都水,怎樣交換兩個杯子中的水)(1) 使用傳統(tǒng)方式實現(xiàn)_, i, _, j := 1, 2, 3, 4(
19、2) 使用多重賦值的方式實現(xiàn)多重賦值的方式交換兩個變量的值,比通過第三個變量來進行變量交換更簡單,代碼也少。9:輸出格式關(guān)于“輸出“大家也都能夠理解是什么意思了,就是將數(shù)據(jù)信息打印在電腦屏幕上。生活中也隨處可見輸出的場景。在我們GO 語言中進行輸出,用到我們前面所講解的兩個函數(shù):Print()和Println()這個兩個函數(shù)的區(qū)別就是Print()函數(shù)不換行,Println()換行輸出。關(guān)于輸出這里有兩個問題,需要給大家強調(diào)清楚。(1)我們前面的,已經(jīng)多次用到輸出,不管是采用 Print(),還是 Println(),但是問題是,每次輸出的數(shù)據(jù)結(jié)構(gòu)不清晰,比較。例如如下程序:該程序輸出的結(jié)果是
20、 1,10,20 .如果我們現(xiàn)在讓另外一個程序員查看該結(jié)果,該程序員很難分清楚,1 是來自哪個變量,2 是來自哪個變量,3 來自哪個變量,除非該程序員閱讀代碼。但是,大家想一下,如果該程序的代碼量非常大,那么該程序員閱讀代碼是否要花費很長的時間呢?所以,建議采用如下輸出:雙引號內(nèi)的內(nèi)容會原樣輸出。這樣結(jié)構(gòu)比較清晰,注意與變量名之間用逗號分隔。(3) 除了使用Println()函數(shù)換行輸出以外,還有另外一個函數(shù) Printf()也可以實現(xiàn)換行輸出。示例如下:運行以后,發(fā)現(xiàn)確實換行了。這種輸出方式,就是格式化輸出,%d,表示輸出的是一個整數(shù),第一個%d 會被變量 a 的值替換,第二個%d 會被變量
21、b 替換,其它類型的輸出用什么去表示后面會給大家講解。 “n” 表示換行。有同學(xué)可能就問了,這種換行輸出方式比較麻煩,但是如果有結(jié)構(gòu)的輸出多個變量的值,Println()輸出就會比較麻煩,并且結(jié)構(gòu)也會感覺比較,還是以上面的代碼為例,如下:下面我們在給大家演示函數(shù)Printf()的輸出:通過對比發(fā)現(xiàn)Printf()函數(shù)換行輸出多個變量值,結(jié)構(gòu)清晰。10:接收輸入前面我們所寫的所有的程序,都是直接給變量賦值,但是很多情況下,我們希望用戶通過鍵盤輸入一個數(shù)值,到某個變量中,然后將該變量的值取出來,進行操作。我們?nèi)粘I钪幸步?jīng)常用到輸入的場景:咱們在ATM前取錢時,肯定需要輸入,對不?那么怎樣才能讓程
22、序知道咱們剛剛輸入的是什么呢?大家應(yīng)該知道了,如果要完成ATM 機取錢這件事情,需要先從鍵盤中輸入一個數(shù)據(jù),然后用一個變量來保存,是不是很好理解啊!那么我們GO 語言怎樣接收用戶的鍵盤輸入呢?如下:在 GO 中我們用到了“fmt”這個的 Scanf()函數(shù)來接收用戶鍵盤輸入的數(shù)據(jù)。當程序執(zhí)行到 Scanf()函數(shù)后,會停止往下執(zhí)行,等待用戶的輸入,輸入完成后程序繼續(xù)往下執(zhí)行。在這里重點要注意的是 Scanf()函數(shù)的書寫格式,首先也要用“%d”,來表示輸入的是一個整數(shù),輸入完整數(shù)后到變量age 中,注意這里age 變量前面一定要加上“&”符號,表示獲取內(nèi)存單元的地址(前面我們說的內(nèi)存區(qū)
23、域的編號),然后才能夠。還有另外一種獲取用戶輸入數(shù)據(jù)的方式,如下:通過 Scan 函數(shù)接收用戶輸入,這時可以省略掉%d,這種寫法更簡單。11:變量命名規(guī)范在我們前面的編,我們定義變量時都是隨意進行命名,但是在 GO 語言中,對變量名有一些規(guī)范性的要求,下面我們看一下具體的要求。(1)變量命名規(guī)范要求名字必須以一個字母(Un code 字母)或下劃線開頭,后面可以跟任意數(shù)量的字母、數(shù)字或下劃線。大寫字母和小寫字母是不同的:heapSort 和 Heapsort 是兩個不同的名字。除了上面提到的規(guī)范要求以外,GO 語言特有的,具有一定含義的一些字符,也不能作為變量名稱。例如,前面我們接觸到的 fu
24、nc, fmt,print 等等,這些都是 GO 自帶的,具有特殊含義的字符,我們稱為關(guān)鍵字。以上關(guān)鍵字都不能作為變量的名稱。此外,還有大約 30 多個預(yù)定義的名字,比如 int 和true 等(2)下面的變量名稱哪些正確?(3)見名知意true false iota nilint int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string errormake len cap new append copy clo
25、se delete complexrealimagpanic recoverbreakdefaultfuncinterfaceselect casedefergomapstruct chanelsegotopackageswitch constfallthroughifrangetypecontinueforimportreturnvar起一個有意義的名字,盡量做到看一眼就知道是什么意思(提高代碼可 讀性) 比如: 名字 就定義為 name , 定義學(xué)生 用student(4) 駝峰命名法小駝峰式命名ower camel case): 第一個單詞以小寫字母開始;第二個單詞的首字母大寫,例如:m
26、yName、aDog大駝峰式命名法(upper camel case): 每一個單字的首字母都采用大寫字母,例如:FirstName、LastName不過在程序員中還有一種命名法比較流行,就是用下劃線“_”來連接所有的單詞,比如 send_buf五:基礎(chǔ)數(shù)據(jù)類型前面我們寫的,用到的變量的類型都是整型,但是在我們 GO 語言中,還有很多其它的類型,下面我們看一下幾個非常重要的類型,其它類型隨著課程的深入,后面會給大家講解到。1:類型在計算機中,我們用什么數(shù)據(jù)類型來表示一句話的對錯,例如:在計算機中描述(20 歲)比(18)小,這句話的結(jié)果?類型的變量取值要么是真(true),要么是假(false
27、),用 bool 關(guān)鍵字來進行定義。示例如下:類型名稱長度零值說明bool類型1false其值不為真即為假,不可以用數(shù)字代表true 或 falsebyte字節(jié)型10uint8 別名int, uint整型-0有符號 32 位或無符號 64 位int8整型10-128 127uint8整型100 255int16整型20-32768 32767,uint16整型200 65535int32整型40-2147483648 到 2147483647uint32整型400 到(42 億)int64整型80-8 到70uint64整型80到15(1844 京)float32浮點型40.0小數(shù)位精確到 7
28、 位float64浮點型80.0小數(shù)位精確到 15 位string字""utf-8 字指定格式的輸出:類型主要用于后面講解的條件, 關(guān)于條件, 我們在這里先舉一個生活中的案例, 大家可以理解一下:2:浮點型有格式的輸入與輸出f2:=12.0/如果不加小數(shù)點,f2 會被推導(dǎo)為整型而不是浮點型3:字符類型(1)字符基本輸入與輸出所謂字符類型是用單引號括起來的單個字符,關(guān)于字符的定義使用如下:輸入一個字符,如下所示:(2)字符第二種輸入與輸出方式。這里定義了,ch 是一個字符類型,賦值卻是一個整數(shù) 97,打印的結(jié)果是小寫字符a.是:計算機不能直接字符類型,只能轉(zhuǎn)成數(shù)字,但是為什么
29、小寫字符a,對應(yīng)的整數(shù)是 97 呢?因為,計算機是根據(jù)ASCII碼來。(這里只是簡單介紹 ASCII)注意:varf1float32f1=12注意強調(diào):問題,以下代碼輸出的結(jié)果是多少?(3)轉(zhuǎn)義字符字符除了我們常見的字符a,字符b等等以外,還有一些特殊的字符,例如我們講解的n, 它的作用是什么?換行,在屏幕上輸出具體的內(nèi)容。這種字符我們稱為轉(zhuǎn)義字符(具有特殊含義),那么除了n字符以外,還有哪些是我們以后編經(jīng)常用到的轉(zhuǎn)義字符呢?":表示一個英文半角的雙引號t:表示一個tab 鍵的空格(可以用來對輸出的內(nèi)容進行排版):表示一個(主要用在表示磁盤目錄上,后面我們講解文件操作時,經(jīng)驗要根據(jù)磁
30、盤目錄獲取文件然后進行,寫入等操作)以上就是我們以后編經(jīng)常用到的轉(zhuǎn)義字符,需要大家記住。4:字類型用單引號括起來的單個字符是字符類型,引號括起來的字符是字類型?!癮”是字符還是字呢?下面是關(guān)于字的定義使用:字輸入:5:字符與字區(qū)別關(guān)于字符與字的區(qū)別:6:fmt 輸出輸入我們前面在輸出與輸入字類型,字符類型,整型等都指定了對應(yīng)的格式化,那么go 語言中還有哪些格式化呢?大家目前先掌握該表格中,標注紅色的內(nèi)容。在紅色內(nèi)容中,我們沒有用到的是%T,作用是輸出值的類型,示例如下:六:1:定義使用在講解之前,我們要先簡單說一下我們前面講解的變量。我們都知道,變量是用來數(shù)據(jù),并且變量里面的值是可以在程序運
31、行時隨時發(fā)生變化的,例如如下案例,結(jié)果輸出是多少?這個程序我們前面已經(jīng)做過,最終的輸出結(jié)果是 20,因為重新給number 變量賦值。格式含義%一個%字面量%b一個二進制整數(shù)值(基數(shù)為 2),或者是一個(高級的)用科學(xué)計數(shù)法表示的指數(shù)為 2 的浮點數(shù)%c字符型。可以把輸入的數(shù)字按照 ASCII 碼相應(yīng)轉(zhuǎn)換為對應(yīng)的字符%d一個十進制數(shù)值(基數(shù)為 10)%f以標準記數(shù)法表示的浮點數(shù)或者復(fù)數(shù)值%o一個以八進制表示的數(shù)字(基數(shù)為 8)%p以十六進制(基數(shù)為 16)表示的一個值的地址,前綴為 0x,字母使用小寫的 a-f表示%q使用 Go 語法以及必須時使用轉(zhuǎn)義,以雙引號括起來的字或者字節(jié)切片byte,
32、或者是以單引號括起來的數(shù)字%s字。輸出字中的字符直至字中的空字符(字以'0結(jié)尾,這個'0'即空字符)%t以 true 或者 false 輸出的值%T使用 Go 語法輸出的值的類型%x以十六進制表示的整型值(基數(shù)為十六),數(shù)字 a-f 使用小寫表示%X以十六進制表示的整型值(基數(shù)為十六),數(shù)字 A-F 使用小寫表示但是,里面的值確定好后,后面是不修改的。下面看一下關(guān)于的定義使用:名規(guī)范與變量命名規(guī)范一致。問題:什么場景下會用到呢?在程序開發(fā)中,我們用一直發(fā)生變化的數(shù)據(jù),例如:,號碼等。像這類的數(shù)據(jù),在整個運行中都是不發(fā)生改變的。2:字面所謂字面(literal),是指硬編
33、碼的,如:3:iota 枚舉可以使用iota初始化,它用于生成一組以相似規(guī)則初始化的,但是不用每行都寫一遍初始化表。注意:在一個const語句中,在第一個的所在的行,iota 將會被置為 0,然后在每一個有的行加一。具體使用方式如下:1233.1415 / 浮點類型的3.2+12i / 復(fù)數(shù)類型的true /類型的"foo" / 字七:運算符在前面的課,我們已經(jīng)學(xué)習(xí)了變量,那么接下來我們學(xué)習(xí)一下運算符。GO 語言中常見的運算符有算術(shù)運算符,賦值運算符,關(guān)系運算符,邏輯運算符等。1:算術(shù)運算符(1)算術(shù)表:由算術(shù)運算符連接起來的式子.如:1+1a-b(變量 ab 前面已并賦初
34、值)下面以 a=10 ,b=20 為例進行計算自增與自減操作a+等價于a=a+1注意:GO 語言中沒有前自增,這是與其它編程語言不同的地方。(2)演示:某學(xué)生三門課成績?yōu)?語文:90 數(shù)學(xué):80 英語:67,編程求總分和平均分.雖然已經(jīng)計算出總分與平均分了,但是我們可以對上面的程序進行優(yōu)化,怎么優(yōu)化呢?示例如下:運算符術(shù)語示例結(jié)果+加10 + 515-減10 - 55*乘10 * 550/除10 / 52%取模(取余)10 % 31+后自增,沒有前自增a=0; a+a=1-后自減,沒有前自減a=2; a-a=1以上程序大家需要注意幾點:(2.1)該第一種實現(xiàn)減少了變量的定義,可以減少對內(nèi)存的占
35、用,所以變量不是定義越多越好。(2.2)注意運算優(yōu)先級:先乘除,后加減,有括號先算括號里的,相同級別的從運算int a=(1+5)+3)*2(2.3) 小括號可以的套用,但一定要成對出現(xiàn)(3)類型轉(zhuǎn)換:現(xiàn)在我們把上面提的需求修改一下:語文:90 數(shù)學(xué):80 英語:69,編程求總分和平均分.只是將英語的成績進行了修改,還是計算總分和平均分但是平均分的計算結(jié)果還是 79 分,為什么沒有小數(shù)呢?現(xiàn)在將程序進行如下修改:Go 語言中不隱式轉(zhuǎn)換,所有類型轉(zhuǎn)換必須顯式(強制轉(zhuǎn)換),而且轉(zhuǎn)換只能發(fā)生在兩種相互兼容的類型之間(1)思考題:(4.1)請閱讀以下程序,如果該程序正確,請說出程序運行的結(jié)果,如果有錯
36、誤,請說出錯誤,并指明怎樣進行修改?(4.2)以下程序,如果正確請說出程序運行的結(jié)果,如果錯誤,請說出錯誤,并指明怎樣進行修改?(4.3)以下程序,如果正確請說出程序運行的結(jié)果,如果錯誤,請說出錯誤,并指明怎樣進行修改?var ch byte = 97/var a int = ch /err, cannot use ch (type byte) as type int in assignmentvar a int = int(ch)(5)練習(xí):練:定義兩個數(shù)分別為 100 和 20,打印出兩個數(shù)的和。練習(xí) 2:計算半徑為 5 的圓的面積和周長并打印出來.(pi 為 3.14)面積:pi*r*r
37、; Perimeter(周長)練習(xí) 3:某商店T 恤(T-shirt)的價格為 35 元/件,褲子(trousers)的價格為 120 元/條.小明在該店買了 3 件T 恤和 2 條褲子,請計算并顯示小明應(yīng)該付?打 8.8 折后呢?注意:以上代碼定義多個變量,主要目的是讓大家理解類型轉(zhuǎn)換練習(xí) 4:如上題中打完 8.8 折后出現(xiàn)小數(shù),商店為了結(jié)算方便,只收用戶整數(shù)部分的錢,如本應(yīng)收用戶 303.6,現(xiàn)在只收用戶303 元,應(yīng)該如何做?(2)強制類型轉(zhuǎn)換總結(jié)強制類型轉(zhuǎn)換的語法格式:數(shù)據(jù)類型名(待轉(zhuǎn)換的值)例如:強制類型轉(zhuǎn)換,數(shù)據(jù)類型一定要相兼容下面的寫法對嗎?謹記:int 轉(zhuǎn) float 強制轉(zhuǎn)換
38、,多小數(shù)float 轉(zhuǎn)int 強制轉(zhuǎn)換,丟精度.(3)補充:關(guān)于“+”運算符,除了可以完成兩個數(shù)字相加以外,也可以兩個字,如下:(4)作業(yè):(6.1)編程實現(xiàn)計算幾天(如 46 天)是幾周零幾天?(6.2)編程實現(xiàn) 107653 秒是幾天幾小時幾分鐘幾秒?2:賦值運算符關(guān)于賦值運算符前面我們已經(jīng)使用過多次,賦值運算符 =,varint num=9;num=num+1; 這里的=號是賦值運算符,不是數(shù)學(xué)的相等.常見的賦值運算符如下,前面我們使用的=是普通賦值,+=,-=等我們稱為“復(fù)合賦值運算符”3:關(guān)系運算符關(guān)系運算符我們又稱為比較運算符,聽到比較這個詞,大家想到的就是比較大小,例如:大象的重
39、量(1500)>老鼠的重量(1)兔子的(3)>烏龜?shù)?1000)(20)=你的(20)提問:比大比小的結(jié)果是什么?結(jié)果是對或者是錯,在GO 語言中,怎樣表示對于錯呢?關(guān)系運算的結(jié)果是類型的。bool 值只有兩個真:true假:falseGO 語言中常見的關(guān)系運算符如下:由以運算符的表我們稱為關(guān)系表。關(guān)系運算符具體使用方式如下:運算符術(shù)語示例結(jié)果=相等于4 = 3false!=不等于4 != 3true<小于4 < 3false>大于4 > 3true<=小于等于4 <= 3false>=大于等于4 >= 1true運算符說明示例=普通
40、賦值c = a + b 將 a + b 表結(jié)果賦值給 c+=相加后再賦值c += a 等價于 c = c + a-=相減后再賦值c -= a 等價于 c = c - a*=相乘后再賦值c *= a 等價于 c = c * a/=相除后再賦值c /= a 等價于 c = c / a%=求再賦值c %= a 等價于 c = c % a4:邏輯運算符(1)常見的邏輯運算符如下:有邏輯運算符連接的表叫做邏輯表通過以上表格我們發(fā)現(xiàn):邏輯表的結(jié)果同樣也是 bool 類型邏輯運算符兩邊放的一般都是關(guān)系表或者 bool 類型的值。例如:5>3 &&true3>5|false(2)
41、案例演示:讓用戶輸入老王的語文和數(shù)學(xué)成績,輸出以下是否正確,正確輸出True,錯誤輸出False2.1)老王的語文和數(shù)學(xué)成績都大于 90 分2.2)語文和數(shù)學(xué)有一門是大于 90 分的(3) 總結(jié):(3.1)邏輯與 &&表1&&表2(3.2)邏輯或 |表1|表2(3.3)邏輯非 !表表!表表1表2表1|表2TrueTrueTrueTrueFalseTrueFalseTrueTrueFalseFalsefalse表1表2表1&&表2TrueTrueTrueFalseTrueFalseTrueFalseFalseFalseFalsefalse運算符術(shù)語
42、示例結(jié)果!非!a如果 a 為假,則!a 為真; 如果 a 為真,則!a 為假。&&與a && b如果 a 和b 都為真,則結(jié)果為真,否則為假。|或a | b如果 a 和b 有一個為真,則結(jié)果為真,二者都為假時,結(jié)果為假。5:其他運算符關(guān)于指針的應(yīng)用,我們后面會重點給大家講解,目前大家只需要掌握&6:運算符優(yōu)先級(1)上面我們已經(jīng)將運算符介紹完了,下面說一下它們的運算符優(yōu)先級。在Go 語言中,一元運算符(一些只需要一個操作數(shù)的運算符稱為一元運算符(或單目運算符)。)擁有最高的優(yōu)先級,二元運算符的運算方向均是從。下表列出了所有運算符以及它們的優(yōu)先級,由上至下
43、代表優(yōu)先級由高到低:如下圖所示:上圖中部分運算符現(xiàn)在沒有講解到,后期用到時再給大家具體講解,目前大家需要掌握的是算術(shù),賦值,關(guān)系,邏輯,取地址運算符。(2)案例練習(xí):寫下閏年的表,設(shè)待的年份變量為 year.閏年的判定(符合下面兩個條件之一):年份能夠被 400 整除(2000)年份能夠被 4 整除但不能被 100 整除.(2008)讓用戶輸入一個年份,如果是潤年,則輸出true,如果不是,則輸出 false.2100/1600/1800/2009 年是閏年嗎?注意:邏輯與的優(yōu)先級要高于邏輯或。優(yōu)先級運算符7!6*/%<< >>&&5+-|4=!=<
44、; <=>=>3<-2&&1|運算符術(shù)語示例說明&取地址運算符&a變量 a 的地址*取值運算符*a指針變量a 所指向內(nèi)存的值TrueFalseFalsetrue八:流程前面我們寫的程序都是從第一行開始執(zhí)行,一直執(zhí)行到末尾,一行一行的順序執(zhí)行下來,這種執(zhí)行結(jié)構(gòu)叫順序執(zhí)行結(jié)構(gòu)。GO 語言除了有順序結(jié)構(gòu),還有選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。ll順序結(jié)構(gòu):順序執(zhí)行,不發(fā)生跳轉(zhuǎn)。選擇結(jié)構(gòu):依據(jù)是否滿足條件,有選擇的執(zhí)行相應(yīng)功能。l循環(huán)結(jié)構(gòu):依據(jù)條件是否滿足,循環(huán)多次執(zhí)行某段代碼。下面先講解選擇結(jié)構(gòu):1:選擇結(jié)構(gòu)(1)生活中的選擇結(jié)構(gòu)我們也稱為場景結(jié)構(gòu)。生活中的
45、關(guān)于的場景也非常多,如下::如果跪鍵盤的時間大于 60 分鐘,那么媳婦我晚飯不用做了?;疖囌景矙z(2)開發(fā)中的場景重要日期if 今天是周六或者周日小總結(jié):如果某些條件滿足,才能做某件事情,而不滿足時不做,這就是所謂的1.1if 結(jié)構(gòu)在編實現(xiàn)選擇結(jié)構(gòu)就是用ifif 結(jié)構(gòu)基本語法if 條件代碼語句,條件如果為真(true),那么就執(zhí)行大括號中的語句,如果為假(false),就不執(zhí)行大括號中的語句,(大家可以想一下,什的表返回的結(jié)果要么為true,要么為 false),繼續(xù)執(zhí)行 if 結(jié)構(gòu)后面的代碼具體案例如下:上面的程序可以進行簡化:條件不滿足時不執(zhí)行GO 語言相比其它語言要靈活很多,下面我們看一
46、下 if 的另外一種語法格式約妹子if 今天是節(jié) 買玫瑰if 今天發(fā)工資 先還的錢if 有剩余又可以 happy 了,O(_)O 哈哈else噢,no。還的等 30 天練習(xí): 讓用戶輸入用戶名和,如果用戶名為 admin,為 mypass,則提示登錄1.2if else 結(jié)構(gòu)基本語法想:在使用if 的時候,它只能做到滿足條件時要做的事情。那萬一需要在不滿足條件的時候,做某些事,該怎么辦呢?例如:的成績大于 90(含)分,那么他 100 元錢,否則的話,就讓跪方便面。有同學(xué)可能會想,這道題用if 結(jié)構(gòu)也可以實現(xiàn)。如下所示:雖然以上代碼可以實現(xiàn),但是比較麻煩,我們可以使用更簡單的方式:else結(jié)構(gòu)
47、如下:if 條件代碼語句 1else代碼語句 2首先先執(zhí)行 if 后面的條件,如果條件成立(結(jié)果為真),執(zhí)行 if 后面的代碼語句 1,代碼語句 1 執(zhí)行完成后,表示整個if-else-結(jié)構(gòu)結(jié)束了(else 后面的代碼語句 2執(zhí)行),繼續(xù)執(zhí)行后面的代碼。如果 if 后面的條件不成立也就是結(jié)果為假,那么 if 后面的代碼語句 1被執(zhí)行,這時會執(zhí)行 else 后面的代碼語句 2,執(zhí)行,表示整個 ifelse結(jié)構(gòu)執(zhí)行結(jié)束了,再執(zhí)行后續(xù)的代碼。下面我們通過if-else結(jié)果完成上面的案例。1.3 if 嵌套我們上面的案例中,使用的是if-else 的基本結(jié)構(gòu),其實 if-else 結(jié)構(gòu)還可以進行嵌套使
48、用。例如:輸入公交卡當前的余額,只要超過 2 元,就可以上公交車;如果空座位的數(shù)量大于 0,就可以坐下以上案例在 if 中嵌套了 if-else 結(jié)構(gòu),同理在 else 也可以嵌套 if-else 結(jié)構(gòu),這個要根據(jù)實際情況確定。下面我們看如下題目:(4.3)對學(xué)員的成績評測(大家考慮用 if 好還是用if-else 好)成績>=90 :A90>成績>=80 :B80>成績>=70 :C70>成績>=60 :D成績<60 :E(4.3.1)我們先使用 if 來實現(xiàn)上面的問題:上面的代碼我們發(fā)現(xiàn)最后都會輸出“E”,為什么呢?解決方案如下:(4.3.2
49、)下面我們來使用 if-else 結(jié)構(gòu)來解決上面的問題案例演示如下:上面的代碼雖然滿足了我們的需求,但是嵌套的代碼非常多,可讀性比較差,我們在以后的編程工作中盡量避免這種多重嵌套。通過這道題,我們發(fā)現(xiàn)在這種多條件應(yīng)用的場景中不太適合通過 if(適合一種條件的情況)或者是 if-else(適合兩種條件的情況或者是條件不是很多的場景)進行。上面的題目更好的方法:if-else if 結(jié)構(gòu)1.4if-else if 結(jié)構(gòu)基本語法如下:if 條件要執(zhí)行的代碼段else if 條件要執(zhí)行的代碼段else if 條件要執(zhí)行的代碼段else if 條件要執(zhí)行的代碼段.else通過以上的語法格式我們發(fā)現(xiàn),可以
50、寫很多的 else if 結(jié)構(gòu)。具體的執(zhí)行過程:程序首先第一個if 所帶的小括號中的條件,如果條件成立,也就是返回一個 true,則執(zhí)行該if 所帶的大括號中的代碼,執(zhí)行完成后,立即跳出 if else-if 結(jié)構(gòu)。如果第一個if 所帶的條件不成立,也就是返回一個 false,則繼續(xù)向下進行,依次的每一個 if 所帶的條件,如果成立,就執(zhí)行該if 所帶的大括號中的代碼,如果不成立,則繼續(xù)向下,如果每個if 所帶的條件都不成立,就看當前這個 if else-if 結(jié)構(gòu)中是否存在else。如果有else 的話,則執(zhí)行else 中所帶的代碼,如果沒有 else,則整個 if-else if 什不做。
51、else 可以省略。下面我們使用該結(jié)構(gòu)完成上面的案例:通過以上代碼,我們發(fā)現(xiàn) if-else if 結(jié)構(gòu)在進行多條件時確實比 if, if-else(嵌套)要方便很多,并且結(jié)構(gòu)清晰,閱讀性比較強。(4.5)練習(xí): 提示用戶輸入,如果是“88888”則提示正確,否則要求再輸入一次,如果是“88888”則提示正確,否則提示錯誤,程序結(jié)束。(4.6)練習(xí):提示用戶輸入用戶名,然后再提示輸入,如果用戶名是“admin”并且是“88888”,則提示正確,否則,如果用戶名不是admin 還提示用戶用戶名不存在,如果用戶名是 admin 則提示錯誤。用于該題的條件比較多,所以這里使用的是 if-else i
52、f 結(jié)構(gòu)。(4.7)練習(xí):提示用戶輸入,如果大于等于 18,則告知用戶可以查看,如果小于 10 歲,則告知不查看,如果大于等于10 歲并且小于 18,則提示用戶是否繼續(xù)查看(yes、no),如果輸入的是 yes 則提示用戶請查看,否則提示",你放棄查看"。首先我們分析一下該題的條件:第一種情況:>=18第二種情況:<10第三種情況:>=10&&<18,如果滿足該條件,則繼續(xù)用戶輸入的內(nèi)容是“yes”還是”no”根據(jù)以上分析,使用if-else if 結(jié)構(gòu)比較容易實現(xiàn)。具體案例展示如下:總結(jié):我們通過前面的案例講解,大家應(yīng)該能夠總結(jié)出if 結(jié)構(gòu),if-else 結(jié)構(gòu)和if-else if 結(jié)構(gòu)應(yīng)用的場景.if 結(jié)構(gòu)適合:一種的if-else 結(jié)構(gòu)適合:兩種情況的if-else if 結(jié)構(gòu)適合: 多種情況,并且都是對區(qū)間中的數(shù)據(jù)進行(例如:成績)1.5switch 結(jié)構(gòu)下面我們開始講解選擇中的另外一個結(jié)構(gòu)就是 switch 結(jié)構(gòu)。在講解switch 結(jié)構(gòu)之前,我們先來看如下問題:的年終工作評定,如果定為 A 級,則工資漲 500 元,如果定為 B 級,則工資漲 200 元,如果定為 C 級,工資不變,如果定為 D 級工資降 200 元,如果定為E
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級語文上冊 第四單元 寫作 語言要連貫教學(xué)實錄 新人教版
- 2025年江蘇貨運從業(yè)資格證科目一模擬考試題庫
- 流動式吊車知識培訓(xùn)課件
- 四年級語文上冊 第四單元 13 精衛(wèi)填海教學(xué)實錄 新人教版五四制
- 撒哈拉以南非洲(第2課時)課件-2024~2025學(xué)年人教版初中地理七年級下冊
- 第3課+中古時期的歐洲+高一下學(xué)期統(tǒng)編版(2019)必修中外歷史綱要下
- 陜西省咸陽市2023-2024學(xué)年高一(上)期末物理試卷【含解析】
- 部編版二年級語文下冊第3課《開滿鮮花的小路》精美課件
- 第2課《首屆諾貝爾獎頒發(fā)》教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版語文八年級上冊
- 北京市通州區(qū)2024-2025學(xué)年高一上學(xué)期1月期末物理試題(解析版)
- 新建鐵路專用線工程可行性研究報告
- 【地理】自然環(huán)境課件-2024-2025學(xué)年七年級地理下學(xué)期(人教版2024)
- 北京大興區(qū)公開招考社區(qū)服務(wù)站專職工作者高頻重點提升(共500題)附帶答案詳解
- 2024年中國作家協(xié)會所屬單位招聘考試真題
- 2025年房地產(chǎn)年度工作計劃
- 高血壓性視網(wǎng)膜病變
- 2025山東能源集團中級人才庫選拔管理單位筆試遴選500模擬題附帶答案詳解
- 醫(yī)院后勤管理與服務(wù)提升方案
- GB/T 18281.1-2024醫(yī)療保健產(chǎn)品滅菌生物指示物第1部分:通則
- 項目一 CA6140車床的操作
- DB21T 2760-2023 裝配式住宅建筑設(shè)計規(guī)程
評論
0/150
提交評論