流程控制是每種編程語言控制邏輯走向和執行次序的重要部分,流程控制可以說是一門語言的“經脈”。
Go語言中最常用的流程控制有if和for,而switch和goto主要是為了簡化代碼、降低重復代碼而生的結構,屬于擴展類的流程控制。
if else(分支結構)
if條件判斷基本寫法
Go語言中if條件判斷的格式如下:

當表達式1的結果為true時,執行分支1,否則判斷表達式2,如果滿足則執行分支2,都不滿足時,則執行分支3。 if判斷中的else if和else都是可選的,可以根據實際需要進行選擇。
Go語言規定與if匹配的左括號{必須與if和表達式放在同一行,{放在其他位置會觸發編譯錯誤。 同理,與else匹配的{也必須與else寫在同一行,else也必須與上一個if或else if右邊的大括號在同一行。
舉個例子:

if條件判斷特殊寫法
if條件判斷還有一種特殊的寫法,可以在 if 表達式之前添加一個執行語句,再根據變量值進行判斷,舉個例子:

思考題: 上下兩種寫法的區別在哪里?
for(循環結構)
Go 語言中的所有循環類型均可以使用for關鍵字來完成。
for循環的基本格式如下:

條件表達式返回true時循環體不停地進行循環,直到條件表達式返回false時自動退出循環。

for循環的初始語句可以被忽略,但是初始語句后的分號必須要寫,例如:

for循環的初始語句和結束語句都可以省略,例如:

這種寫法類似于其他編程語言中的while,在while后添加一個條件表達式,滿足條件表達式時持續循環,否則結束循環。
無限循環

for循環可以通過break、goto、return、panic語句強制退出循環。
for range(鍵值循環)
Go語言中可以使用for range遍歷數組、切片、字符串、map 及通道(channel)。 通過for range遍歷的返回值有以下規律:
- 數組、切片、字符串返回索引和值。
- map返回鍵和值。
- 通道(channel)只返回通道內的值。
switch case
使用switch語句可方便地對大量的值進行條件判斷。

Go語言規定每個switch只能有一個default分支。
一個分支可以有多個值,多個case值中間使用英文逗號分隔。

分支還可以使用表達式,這時候switch語句后面不需要再跟判斷變量。例如:

fallthrough語法可以執行滿足條件的case的下一個case,是為了兼容C語言中的case設計的。

輸出:
a b
goto(跳轉到指定標簽)
goto語句通過標簽進行代碼間的無條件跳轉。goto語句可以在快速跳出循環、避免重復退出上有一定的幫助。Go語言中使用goto語句能簡化一些代碼的實現過程。 例如雙層嵌套的for循環要退出時:

使用goto語句能簡化代碼:

break(跳出循環)
break語句可以結束for、switch和select的代碼塊。
break語句還可以在語句后面添加標簽,表示退出某個標簽對應的代碼塊,標簽要求必須定義在對應的for、switch和 select的代碼塊上。 舉個例子:

continue(繼續下次循環)
continue語句可以結束當前循環,開始下一次的循環迭代過程,僅限在for循環內使用。
在 continue語句后添加標簽時,表示開始標簽對應的循環。例如:
