Go For 迴圈
for
迴圈會迴圈執行一段程式碼指定的次數。
Go 語言中唯一的迴圈語句是 for
迴圈。
Go For 迴圈
如果您想反覆執行相同的程式碼,每次使用不同的值,迴圈會非常方便。
迴圈的每次執行稱為一次迭代。
for
迴圈最多可以包含三個語句
語法
for 語句1; 語句2; 語句3 {
// 每次迭代要執行的程式碼
}
語句1 初始化迴圈計數器的值。
語句2 對每次迴圈迭代進行求值。如果求值為 TRUE,則迴圈繼續。如果求值為 FALSE,則迴圈結束。
語句3 增加迴圈計數器的值。
注意: 這些語句不必作為迴圈的引數出現。但是,它們必須以某種形式出現在程式碼中。
for 迴圈示例
示例 1
此示例將列印數字 0 到 4:
package main
import ("fmt")
func main() {
for i:=0; i < 5; i++ {
fmt.Println(i)
}
}
結果
0
1
2
3
4
示例 1 解釋
- i:=0; - 初始化迴圈計數器 (i),並將起始值設定為 0
- i < 5; - 只要 i 小於 5,迴圈就繼續
- i++ - 每次迭代將迴圈計數器值增加 1
示例 2
此示例以 10 為步長計數到 100:
package main
import ("fmt")
func main() {
for i:=0; i <= 100; i+=10 {
fmt.Println(i)
}
}
結果
0
10
20
30
40
50
60
70
80
90
100
示例 2 解釋
- i:=0; - 初始化迴圈計數器 (i),並將起始值設定為 0
- i <= 100; - 只要 i 小於或等於 100,迴圈就繼續
- i+=10 - 每次迭代將迴圈計數器值增加 10
continue 語句
continue
語句用於跳過迴圈中的一個或多個迭代。然後繼續進行迴圈中的下一次迭代。
示例
此示例跳過值 3
package main
import ("fmt")
func main() {
for i:=0; i < 5; i++ {
if i == 3 {
continue
}
fmt.Println(i)
}
}
結果
0
1
2
4
break 語句
break
語句用於中斷/終止迴圈執行。
示例
此示例在 i 等於 3 時中斷迴圈
package main
import ("fmt")
func main() {
for i:=0; i < 5; i++ {
if i == 3 {
break
}
fmt.Println(i)
}
}
結果
0
1
2
注意: continue
和 break
通常與條件一起使用。
巢狀迴圈
可以在一個迴圈內放置另一個迴圈。
在這裡,“內迴圈”將在“外迴圈”的每次迭代中執行一次
示例
package main
import ("fmt")
func main() {
adj := [2]string{"big", "tasty"}
fruits := [3]string{"apple", "orange", "banana"}
for i:=0; i < len(adj); i++ {
for j:=0; j < len(fruits); j++ {
fmt.Println(adj[i],fruits[j])
}
}
}
結果
big apple
big orange
big banana
tasty apple
tasty orange
tasty banana
Range 關鍵字
range
關鍵字用於更方便地遍歷陣列、切片或對映的元素。它返回索引和值。
range
關鍵字的使用方式如下
語法
for 索引, 值 := range 陣列|切片|對映 {
// 每次迭代要執行的程式碼
}
示例
此示例使用 range
遍歷陣列並列印每個元素的索引和值(idx
儲存索引,val
儲存值)
package main
import ("fmt")
func main() {
fruits := [3]string{"apple", "orange", "banana"}
for idx, val := range fruits {
fmt.Printf("%v\t%v\n", idx, val)
}
}
結果
0 apple
1 orange
2 banana
提示: 要僅顯示值或索引,可以使用下劃線 (_
) 忽略另一個輸出。
示例
在這裡,我們想忽略索引(idx
儲存索引,val
儲存值)
package main
import ("fmt")
func main() {
fruits := [3]string{"apple", "orange", "banana"}
for _, val := range fruits {
fmt.Printf("%v\n", val)
}
}
結果
apple
orange
banana
示例
在這裡,我們想忽略值(idx
儲存索引,val
儲存值)
package main
import ("fmt")
func main() {
fruits := [3]string{"apple", "orange", "banana"}
for idx, _ := range fruits {
fmt.Printf("%v\n", idx)
}
}
結果
0
1
2