Go语言编程从入门到精通,流程控制之switch、for、defer
Go (或Golang )是Google 在2007 年開發(fā)的一種開源編程語言,出自Robert Griesemer 、Rob Pike 和Ken Thompson 之手。2009 年11 月10 日, Google Open Source Blog 向全球發(fā)布了這款語言:公告指出Go 的主要目標(biāo)是“兼具Python 等動(dòng)態(tài)語句的開發(fā)速度和C 或C ++等編譯型語言的性能與安全性”。
1. switch
switch語句可以多分支條件執(zhí)行。自上而下順序執(zhí)行每條case語句中的表達(dá)式,執(zhí)行表達(dá)式結(jié)果相同的case語句,則后續(xù)的case語句會(huì)被忽略,當(dāng)case語句都不匹配時(shí),則執(zhí)行default兜底。
switch 語句可用來替代冗長的if else,switch可以讓代碼看起來更加的易于閱讀,性能也較if else更好。
網(wǎng)上找到了一個(gè)流程圖,很不錯(cuò),借鑒一下。
舉個(gè)例子:
7行:定義了一個(gè)需要評估的變量s;
9、11、13行case語句指定了需要與變量s比較的表達(dá)式;
如果表達(dá)式成立,則執(zhí)行相應(yīng)的語句;
如果表達(dá)式都不成立,則執(zhí)行default后的語句。
需要注意的是,case是順序自上至下執(zhí)行的。
Default也可以理解為兜底執(zhí)行。
2. for語句
for是一種循環(huán)控制結(jié)構(gòu),在go語言中,for有3種形式,for反復(fù)執(zhí)行代碼塊,直到發(fā)現(xiàn)條件不再滿足循環(huán)條件為止。
Go中,循環(huán)控制只有for一種,沒有foreach、while等。
我們做一個(gè)1到10的求和。
6行:定義了變量n初始值為0;
7行:for循環(huán),變量i初始值為1,判斷變量i小于等于10,i++也就是i = i +1,也就是說每次變量i自加1次。
8行:n += i 也就是n = n +1。
當(dāng)變量i小于10時(shí),循環(huán)終止,跳出循環(huán)。
上面的代碼也可以換一種寫法
可以看到,雖然代碼不是太一樣,但是執(zhí)行結(jié)果是完全一樣的。
當(dāng)然還可以用第3種寫法
7行:聲明變量its,類型為整形數(shù)組,其中包含1到10的數(shù)字
8行:for語句的迭代變量i用來放數(shù)組循環(huán)過程中的值,直到循環(huán)結(jié)束。
這種寫法看起來更麻煩了,其實(shí)不然,這種寫法用的也是更為廣泛的一種。For range寫法通常不需要直到數(shù)組的長度,更適合遍歷大多數(shù)數(shù)據(jù)結(jié)構(gòu)。
3. defer語句
Defer是一個(gè)非常有用的功能,它通常在執(zhí)行清理操作時(shí)或確保操作完成后再執(zhí)行defer跟著的函數(shù)。
我們還是先舉個(gè)例子,這個(gè)例子可以計(jì)算1到1000相加的和。
16行:defer fmt.Println("end")在程序最后執(zhí)行了。
思考一下,如果順序有多個(gè)defer,那么執(zhí)行順序是什么呢?
思考3秒鐘,考慮下執(zhí)行結(jié)果。
5
4
3
2
1
執(zhí)行結(jié)果如下:
和你想的一樣嗎?
可以看到,先寫的defer是最后執(zhí)行的,而最后寫的defer是優(yōu)先執(zhí)行的。
總結(jié)
以上是生活随笔為你收集整理的Go语言编程从入门到精通,流程控制之switch、for、defer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无限循环抛出 No method fou
- 下一篇: Python基础编程题