go流程控制

2021-09-11 10:01:42 字數 2818 閱讀 5969

用於測試條件是否成立,成立則執行if括起來的**:

if condition 

複製**

如果需要在條件不滿足時執行,則只需要加上else即可:

if condition  else 

複製**

如果存在多個條件,可以使用else-if增加新的判斷:

if condition1  else

if condition2 else

複製**

else-if的數量是沒有限制的,但是為了**的可讀性,盡量少用else-if。

go的switch使用非常靈活,接受任意形式的表示式:

switch var1 

複製**

var1可以是任何型別,而val和val2可以是同型別的任意值。你可以同時在乙個分支中使用多個值:

case val1, val2, val3:

複製**

go中的switch不需要break來結束分支。如果需要在執行了乙個case分支後繼續往後執行,只需要使用fallthrough關鍵字即可:

switch i 

複製**

當case後的語句只有一行時,可以直接將語句放在case後面。case後的執行語句也不需要花括號。case同樣支援邏輯判斷:

switch i 

複製**

同樣的,可以使用return來提前結束**塊的執行。

想要執行某些語句,go中可以使用for來執行。for的基本形式為:

for 初始化語句; 條件語句; 修飾語句 

複製**

例子:

for i := 0; i < 3; i++ 

複製**

輸出:

for index = 0

for index = 1

for index = 2

複製**

因為go具有平行複製的特性,所以也可以在for中使用多個計數器:

for i, j := 0, 10; i < j; i++, j = i + 1 

複製**

也可以將兩個for迴圈巢狀使用:

for i := 0; i < 3; i++ 

}複製**

還可以迴圈乙個unicode字串:

str := "he to"

for i := 0; i < len(str); i++

複製**

輸出:

for index = 0, is = h

for index = 1, is = e

for index = 2, is =

for index = 3, is = t

for index = 4, is = o

複製**

for也支援純條件語句,可以將這個認為是沒有初始化語句和修飾語句的for迴圈:

i := 5

for i >= 0

複製**

輸出:

543

210-1

複製**

for還有另外乙個表達方式for-range,這是go特有的一種方式,在很多場景下都很實用,它可以迭代任何乙個集合,一般形式為:

for i, val := range coll {}

複製**

val對應的是集合中對應索引的值拷貝,剛才的unicode字串就可以直接使用range來迴圈:

str := "he to"

for i, val := range str

複製**

break用於條件,迴圈語句中的退出操作,break做的作用結果是跳過整個**塊,執行後續的操作。 例子:

for i := 0; i < 3; i++ 

fmt.println(j)

}fmt.println()

}複製**

輸出:

0123

0123

0123

複製**

for i := 0; i < 5; i++ 

fmt.println(i)

}//輸出01

2複製**

continue只能用於for迴圈中。

for,switch都可以配合label使用,即第一行第乙個冒號:結尾的單詞:

label1:

for i := 0; i < 5; i++

fmt.println(i)

}// 輸出01

24// 3被跳過了

複製**

但注意標籤和 goto 語句之間不能出現定義新變數的語句,否則會導致編譯失敗。 另外,可以使用goto語句和標籤配合使用來模擬迴圈

i:=0

here:

print(i)

i++if i==5

goto here

複製**

但是這種方式是不推薦使用,如果一定要使用,將標籤放在goto的後面,但注意標籤和goto語句之間不能出現定義新變數的語句,否則會導致編譯失敗。

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...

go 流程控制

if condition ifcondition else ifcondition else if statement condition else 練習二 package main import fmt func main else 練習三 package main import fmt func...