Like Share Discussion Bookmark Smile

J.J. Huang   2025-02-23   Getting Started Golang 03.控制流程   瀏覽次數:次   DMCA.com Protection Status

Go | 在循環中的進步與突破

💬 簡介

在程式設計中,迴圈是處理重複性任務的基本工具。Go 語言中的 for 迴圈不僅簡單易懂,而且十分靈活,可以應用於各種情境。無論是計算累加、處理陣列資料,還是進行複雜的邏輯運算,for 迴圈都能幫助我們進行高效的循環處理。

本文將介紹 for 迴圈的基本用法,以及如何在實際開發中運用它來進行進步與突破。

圖片來源:Gophers


📚 for 迴圈基本概念

在 Go 語言中,for 是唯一的迴圈語法。無論是簡單的循環還是複雜的條件控制,for 迴圈都能勝任。其基本語法如下:

1
2
3
for <初始化>; <條件>; <更新> {
// 迴圈體
}

📝 簡單來說,for 迴圈會先執行初始化,然後在每次循環前檢查條件表達式,如果條件成立則執行迴圈體,執行完後進行更新,然後重複上述流程,直到條件不成立為止。

基本範例:

1
2
3
4
5
6
7
8
9
package main

import "fmt"

func main() {
for i := 1; i <= 5; i++ {
fmt.Println(i)
}
}

📝 在這個範例中,我們使用 for 來進行 15 的迴圈,輸出的結果會是:

1
2
3
4
5
1
2
3
4
5

🧐 for 迴圈的變化形式

1️⃣ 無條件 for 迴圈

有時候我們希望能無限執行某段程式碼,這時可以省略所有條件來創建一個無窮迴圈。這類型的迴圈經常應用在伺服器或監控程式中,持續處理任務直到某個條件被觸發。

🚨 警告: 在使用無條件 for 迴圈時,一定要特別小心,確保程式內有適當的條件來跳出迴圈,例如使用 break 或其他機制避免發生無限迴圈。否則,可能會導致程式卡住,甚至造成資源耗盡。

  • 範例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    package main

    import "fmt"

    func main() {
    i := 1
    for {
    if i > 5 {
    break
    }
    fmt.Println(i)
    i++
    }
    }

    📝 在這個範例中,無條件的 for 迴圈會持續執行,直到 i 超過 5 時,使用 break 跳出迴圈,結果同樣是:

    1
    2
    3
    4
    5
    1
    2
    3
    4
    5

2️⃣ range 迴圈

Go 語言提供了 range 關鍵字,可以用來遍歷陣列、切片、字串、map 等資料結構。range 會依序取得集合中的元素,並將元素的索引和值返回。

  • 範例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package main

    import "fmt"

    func main() {
    arr := []int{10, 20, 30, 40, 50}
    for index, value := range arr {
    fmt.Printf("索引:%d, 值:%d\n", index, value)
    }
    }

    📝 在這個範例中,range 會遍歷陣列 arr,並顯示每個元素的索引與對應的值,輸出結果如下:

    1
    2
    3
    4
    5
    索引:0, 值:10
    索引:1, 值:20
    索引:2, 值:30
    索引:3, 值:40
    索引:4, 值:50

🛠️ for 迴圈在實際應用中的使用

1️⃣ 處理數字累加

for 迴圈最常見的應用之一就是累加或統計數字。在這種情境下,我們可以輕鬆地透過迴圈來處理一系列數值,並進行累計。

  • 範例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package main

    import "fmt"

    func main() {
    sum := 0
    for i := 1; i <= 100; i++ {
    sum += i
    }
    fmt.Println("1 到 100 的總和為:", sum)
    }

    📝 在這個範例中,for 迴圈用來累加 1 到 100 之間的數字,最終結果會是:

    1
    1  100 的總和為: 5050

2️⃣ 處理陣列或切片資料

當需要處理一組資料時,for 迴圈與 range 配合使用可以非常方便地遍歷陣列或切片,並進行相應的處理。

  • 範例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package main

    import "fmt"

    func main() {
    names := []string{"Alice", "Bob", "Charlie", "Dave"}
    for _, name := range names {
    fmt.Println("你好,", name)
    }
    }

    📝 在這個範例中,range 用來遍歷 names 切片,並對每個名稱進行處理,輸出的結果會是:

    1
    2
    3
    4
    你好, Alice
    你好, Bob
    你好, Charlie
    你好, Dave

🚀 進階應用:for 迴圈的突破

  • 跳過某些步驟:使用 continue
    • 有時候我們不希望在某次循環中執行所有的程式碼,這時可以使用 continue 跳過該次循環,直接進入下一次。
  • 提前結束迴圈:使用 break
    • break 用來提前結束迴圈,這在某些情況下可以有效避免不必要的運算,提升效率。

🚨 關於 continuebreak 會於下一章節進行介紹。


🎯總結

for 迴圈語言中最基礎也是最強大的控制流程工具之一。無論是簡單的數字計算、資料處理,還是進階的條件控制,for 都能幫助我們達成目標。透過不同的變化形式和應用,for 讓我們能夠在循環中進步與突破,輕鬆處理各種複雜的問題。

在學習 for 迴圈的過程中,建議多加練習和探索,並思考如何在實際開發中有效地運用它來提高程式的效率與可讀性。

最後建議回顧一下 Go | 菜鳥教學 目錄,了解其章節內容。


註:以上參考了
Go