5.5 流程控制

與流程控制有關的語法和範例。

for loop

底下是幾種常見的寫法:

i := 1 for i <= 3 { fmt.Println(i) } for j := 0; j < 3; j++ { fmt.Println(j) } for { // 無限迴圈 fmt.Println("loop") }

迴圈裡面可以用 continue 來進行下一圈,以及用 break 來跳離迴圈。

For-each range loop

使用 range 關鍵字來指定索引值的範圍:

for i := range 3 { // i = 0, 1, 2 fmt.Println("range", i) }

常用來處理 arrays、slices、maps、channels 等結構:

strings := []string{"hello", "world"} for i, s := range strings { fmt.Println(i, s) }

執行結果:

0 hello 1 world

上例中,若不在乎陣列的索引值,可使用 blank identifier _ 取代 i

strings := []string{"hello", "world"} for _, s := range strings { fmt.Println(s) }

執行結果:

hello world

if statement

Go 的 if 陳述式不需要使用小括弧 (),但必須使用大括號 {}。雖然某些簡單的表達式可以使用小括弧,例如 if (j > 10) {} 這樣的寫法可以通過編譯,但與常見的寫法不一致,而且多此一舉。

Note

事實上,在 VS Code 中編寫 Go 程式的時候,即使在 if 陳述式中使用了小括弧,那些小括弧會在存檔時被 gofmt 工具自動消除。這是因為 Go 工具鍊在 VS Code 中的預設配置為存檔時自動格式化。參閱: 01 Get started > VS Code

else 敘述一定要跟在 if 區塊結尾的大括號後面,不能寫成單獨一行,像底下這樣的寫法將無法通過編譯:

if j > 10 { } else { // 編譯錯誤! else 必須寫在 if 區塊結尾的同一行。 }

If with a short statement

類似 for 迴圈,if 敘述也可以先有一個短敘述(short statement),然後才跟著判斷式。

範例:

func pow(x, n, lim float64) float64 { if v := math.Pow(x, n); v < lim { return v } return lim }

第 2 行的意思是先把 math.Pow() 的結果指派給變數 v,然後判斷 v 是否小於 lim

注意:由 if 的短敘述所宣告的變數只活在那個 if 區塊內。


先這樣,也許有空時會再更新。   我的其他站點:      

Last modified: 2024-10-15