天天看點

007 Go語言基礎之流程控制

目錄

​一、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乘法表。