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