我們經常需要**在滿足一定條件時進行執行,或者需要重複執行**多次,此時需要選擇條件語句(if-else if- else)或選擇語句(switch case)及迴圈語句(for)
當 if 表示式的結果為 true 則執行語句塊內**
has := true
if has
當 if 表示式結果為 true,則執行 if 語句塊內**,否則執行 else 語句塊內**
has := false
if has else
當 if 表示式結果為 true,則執行 if 語句塊內**,否則依次從上到下判斷 else if 表示式結果,若結果為 true 則執行對應語句塊內**並退出 if-else if-else 語句,若 if 和else if 表示式均為 false,則執行 else 語句塊內**
var score int = 88
if score >= 90 else if score >= 80 else if score >= 60 else
可以在 if 語句中初始化語句塊內的區域性變數,多個語句之間使用逗號(;)分隔
只能初始化true或false
if flag := true; flag
if flag := false; flag else
switch 後不跟接變數,此時自上到下選擇第乙個表示式為 true 的 case 語句塊執行並退出,若所有 case 表示式均為 false,則執行 default 語句塊
input := 80
switch
可以在 switch 語句中初始化語句塊內的區域性變數,多個語句之間使用逗號(;)分隔,注意初始化表示式時後面的逗號(;)不能省略
switch operate := "add"; operate
switch score := 80;
switch-case 預設執行 case 語句後退出,若需要繼續執行下乙個 case 語句塊,可以在 case語句塊中使用 fullthrough 進行宣告
switch score := 80;
對於選擇語句可以有 0 個或多個 case 語句,最多有 1 個 default 語句,選擇條件為 true的 case 語句塊開始執行並退出,若所有條件為 false,則執行 default 語句塊並退出。可以通過 fallthrough 修改執行退出行為,繼續執行下一條的 case 或 default 語句塊
for 初始化語句; 條件語句; 後置語句 {}
for 語句後有三個子語句分別為:初始化子語句,條件子語句和後置子語句
執行順序為:
1、初始化子語句
2、 條件子語句
3、語句塊
4、後置子語句
5、b->c->d
6、…7、直到條件子語句為 false 結束迴圈
sum := 0
for i := 1; i <= 100; i++
fmt.println(sum)
break 用於跳出迴圈,當條件滿足則結束迴圈
continue 用於跳過本次迴圈,當條件滿足這跳過本次迴圈進行後置或條件子語句執行
// continue
for i := 1; i <= 5; i++
fmt.println(i)
} // break
for i := 1; i <= 5; i++
fmt.println(i)
}
for 子語句可以只保留條件子語句,此時類似於其他語言中的 while 迴圈
sum := 0
i := 1
for i <= 100
fmt.println(sum)
for 子語句全部省略,則為無限迴圈(死迴圈),s 常與 break 結合使用
sum := 0
i := 1
for
sum += i
i++} fmt.println(sum)
i := 0
for
// ctrl+z或者ctrl+c終止程式執行
用於遍歷可迭代物件中的每個元素,例如字串,陣列,切片,對映,通道等
針對包含 unicode 字元的字串遍歷是需要使用 for-range,range 返回兩個元素分別為位元組索引和 rune 字元,可通過空白識別符號忽略需要接收的變數
text := "我愛中國"
for i, e := range text
for _, e := range text
/*結果
0: 我
3: 愛
6: 中
9: 國我愛
中國*/
for、switch 語句都可以配合標籤(label)形式的識別符號使用,即某一行第乙個以冒號(:)結尾的單詞
標籤的名稱是大小寫敏感的,為了提公升可讀性,一般建議使用全部大寫字母
使用標籤和 goto 語句是不被鼓勵的:它們會很快導致非常糟糕的程式設計,而且總有更加可讀的替代方案來實現相同的需求。
可以通過 goto 語句任意跳轉到當前函式指定的 label 位置
sum := 0
i := 1
start: //定義標籤
if i > 100 else
end: //定義標籤
fmt.println(sum)
break 和 continue 後也可以指定 label 用於指定跳出或跳過指定 label 同層級的迴圈
oi:
for i := 0; i < 5; i++
fmt.println(i, j, "=")
} }bi:
for i := 0; i < 5; i++
fmt.println(i, j)
} }
go流程控制
用於測試條件是否成立,成立則執行if括起來的 if condition 複製 如果需要在條件不滿足時執行,則只需要加上else即可 if condition else 複製 如果存在多個條件,可以使用else if增加新的判斷 if condition1 else if condition2 els...
go流程控制
1 if語句 1 if ture else 2if a 44 a 23else 2 switchswitch 語句用於基於不同條件執行不同動作,每乙個 case 分支都是唯一的,從上直下逐一測試,直到匹配為止。golang switch 分支表示式可以是任意型別,不限於常量。可省略 break,預設...
go流程控制
go語言僅有兩種流程控制語法,不存在while if age 18else if age 7else 標準迴圈 標準迴圈,結束後變數不存在 for i 0 i 10 i 迴圈外定義,結束迴圈後,變數仍存在 var i 0for i 10 i 將累加數值置於迴圈體中 for i 10 閉迴圈 forr...