Go流程控制

2022-06-07 16:00:19 字數 3119 閱讀 9312

我們經常需要**在滿足一定條件時進行執行,或者需要重複執行**多次,此時需要選擇條件語句(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...