4 迴圈for
6 延遲執行defer
go語言提供了條件分支 if,狀態分支 switch,迴圈 for,跳轉 goto,延遲執行 defer,這些流程控制語句。分別作說明如下:
依據條件是否滿足確定執行哪個分支。
語法:
if 條件 1 else if 條件 2 else if 條件 ... else
流程圖:
go是強型別,要求條件表示式嚴格返回布林型資料!
狀態分支,依據特定的狀態值進行分支判斷。
語法:
switch 分支測試表示式
流程如下:
在其他語法(非go,c,php)中,switch 有乙個特定的現象,就是向下穿越,指的是一旦乙個分支 case 滿足,則後續分支**都會被執行。而go語言中,預設分支執行完畢,switch 執行完畢。使用 fallthrough 語法,可以達到穿越下乙個 case 分支的目的。
fallthrough 需要出現在分支語句塊的最後一句!
語法:
switch 分支測試表示式
流程如下:
示例**,邏輯與 if-else-if 一致:
score := 89
switch
個人感覺失去了 switch 分支的意義哈!
語法格式:
for 初始化語句; 條件語句; 條件變化語句
// 輸出1-10
for i := 1; i <= 10; i++
流程如下:
go中允許省略三個語句中的任意,就是可以形成如下的語法:
僅存在條件語句,類似其他語言的 while 結構!
for 條件語句
無限迴圈結構,死迴圈
for
其他結構,三個語句可以任意省略,不再列舉:
for ; 條件語句; 條件變化語句
for 初始化語句; 條件語句;
終止整個迴圈執行。
流程圖如下:
終止本次迴圈體的繼續執行,進行迴圈條件變化。
流程如下:
語法:
for
}
在使用 break,continue 時,若需要終止外層迴圈 for,需要配合語句標籤使用,演示如下:
userlabel:
for
}
額外注意,switch 在語言中,被視為執行一次的迴圈結構,因此 switch 中若要終止外層迴圈,需要使用標籤語法,不能直接 break、continue,演示如下:
userlabel:
for
}
配合標籤完成無條件跳轉。演示如下:
if error
// 其他業務邏輯**略
doerror:
fmt.println(errorinfo)
defer 語句會將其後語句進行延遲處理。在 defer 所屬函式即將返回時,將延遲處理的語句按 defer 的逆序進行執行,也就是說,先被 defer 的語句最後被執行,最後被 defer 的語句,最先被執行。演示如下:
func main()
以上**的執行結果:
before defer
after defer
defer c
defer b
defer a
defer 執行是放在乙個臨時的呼叫棧中,因此是先入棧後出棧的。
流程圖如下:
實操時,處理互斥所時,很常用!
Go語言 流程控制
if else分支判斷 if condition1 if condition1 else if condition1 else if condition2 else if condition3 else 練習 package main import fmt func main else 練習 寫乙個...
Go語言流程控制(六)
go語言的流程控制主要有if for和switch。go語言的if判斷 func main else if score 80 else 需要注意的兩點 1.表示式不可以使用 2.起始花括號必須緊跟表示式後面,不可以另起一行 除此之外,if 判斷寫法還有另一種寫法 func main else if ...
go流程控制
用於測試條件是否成立,成立則執行if括起來的 if condition 複製 如果需要在條件不滿足時執行,則只需要加上else即可 if condition else 複製 如果存在多個條件,可以使用else if增加新的判斷 if condition1 else if condition2 els...