目錄
一、if else(分支結構)
1.1 if條件判斷基本寫法
1.2 if條件判斷特殊寫法
二、for(循環結構)
2.1 無限循環
三、for range(鍵值循環)
四、switch case
五、goto(跳轉到指定标簽)
六、break(跳出循環)
七、continue(繼續下次循環)
八、練習題
流程控制是每種程式設計語言控制邏輯走向和執行次序的重要部分,流程控制可以說是一門語言的“經脈”。
go語言中最常用的流程控制有<code>if</code>和<code>for</code>,而<code>switch</code>和<code>goto</code>主要是為了簡化代碼、降低重複代碼而生的結構,屬于擴充類的流程控制。
一、if else(分支結構)
go語言中<code>if</code>條件判斷的格式如下:
當表達式1的結果為<code>true</code>時,執行分支1,否則判斷表達式2,如果滿足則執行分支2,都不滿足時,則執行分支3。if判斷中的
<code>else if</code>和<code>else</code>都是可選的,可以根據實際需要進行選擇。
go語言規定與<code>if</code>比對的左括号<code>{</code>必須與<code>if和表達式</code>放在同一行,<code>{</code>放在其他位置會觸發編譯錯誤。同理,與
<code>else</code>比對的<code>{</code>也必須與<code>else</code>寫在同一行,<code>else</code>也必須與上一個<code>if</code>或<code>else if</code>右邊的大括号在同一行。
舉個例子:
if條件判斷還有一種特殊的寫法,可以在 if 表達式之前添加一個執行語句,再根據變量值進行判斷,舉個例子:
思考題:
上下兩種寫法的差別在哪裡?
二、for(循環結構)
go 語言中的所有循環類型均可以使用<code>for</code>關鍵字來完成。
for循環的基本格式如下:
條件表達式傳回<code>true</code>時循環體不停地進行循環,直到條件表達式傳回<code>false</code>時自動退出循環。
for循環的初始語句可以被忽略,但是初始語句後的分号必須要寫,例如:
for循環的初始語句和結束語句都可以省略,例如:
這種寫法類似于其他程式設計語言中的<code>while</code>,在<code>while</code>後添加一個條件表達式,滿足條件表達式時持續循環,否則結束循環。
for循環可以通過<code>break</code>、<code>goto</code>、<code>return</code>、<code>panic</code>語句強制退出循環。
三、for range(鍵值循環)
go語言中可以使用<code>for range</code>周遊數組、切片、字元串、map 及通道(channel)。通過
<code>for range</code>周遊的傳回值有以下規律:
數組、切片、字元串傳回索引和值。
map傳回鍵和值。
通道(channel)隻傳回通道内的值。
四、switch case
使用<code>switch</code>語句可友善地對大量的值進行條件判斷。
go語言規定每個<code>switch</code>隻能有一個<code>default</code>分支。
一個分支可以有多個值,多個case值中間使用英文逗号分隔。
分支還可以使用表達式,這時候switch語句後面不需要再跟判斷變量。例如:
<code>fallthrough</code>文法可以執行滿足條件的case的下一個case,是為了相容c語言中的case設計的。
輸出:
五、goto(跳轉到指定标簽)
<code>goto</code>語句通過标簽進行代碼間的無條件跳轉。<code>goto</code>語句可以在快速跳出循環、避免重複退出上有一定的幫助。go語言中使用<code>goto</code>語句能簡化一些代碼的實作過程。例如雙層嵌套的for循環要退出時:
使用<code>goto</code>語句能簡化代碼:
六、break(跳出循環)
<code>break</code>語句可以結束<code>for</code>、<code>switch</code>和<code>select</code>的代碼塊。
<code>break</code>語句還可以在語句後面添加标簽,表示退出某個标簽對應的代碼塊,标簽要求必須定義在對應的<code>for</code>、<code>switch</code>和 <code>select</code>的代碼塊上。舉個例子:
七、continue(繼續下次循環)
<code>continue</code>語句可以結束目前循環,開始下一次的循環疊代過程,僅限在<code>for</code>循環内使用。
在 <code>continue</code>語句後添加标簽時,表示開始标簽對應的循環。例如:
八、練習題
編寫代碼列印9*9乘法表。