iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
Modern Web

後端攻略筆記系列 第 18

Day 18 : Go 語言迴圈大解密:傳統 for 與 for...range 誰適合?

  • 分享至 

  • xImage
  •  

【Go 語言教學】用不同寫法玩轉迴圈:傳統 for 與 for...range 大解析!

在程式設計中,迴圈是不可缺少的基本工具。今天要來介紹 Go 語言裡兩種不同迴圈的寫法—傳統的 for 迴圈和更貼近 Go 風格的 for...range。學會它們,不只讓你的程式更清晰簡潔,也能因應不同場景拿捏得宜,效能與方便兼具。

接下來,用幾個跟生活緊密結合的趣味觀鳥例子,讓你輕鬆掌握這兩種寫法的精髓與差異!


fun 範例 1:用 for...range 逐日列印花園裡的鳥兒數量

birdsPerDay := []int{3, 7, 0, 5, 8, 2}
for day, count := range birdsPerDay {
    fmt.Printf("第 %d 天觀察到 %d 隻鳥\n", day+1, count)
}

這一段用 for...range 簡明又優雅,一次取到索引與該日鳥數,表達生活真實情境[10]。


fun 範例 2:累加全週鳥數,用 for...range 隱藏索引更直覺

birdsPerDay := []int{3, 7, 0, 5, 8, 2}
total := 0
for _, count := range birdsPerDay {
    total += count
}
fmt.Printf("這週鳥數總共是 %d 隻\n", total)

不需要索引時,用 _ 當佔位符更簡潔,人人都愛的乾淨寫法[10]。


fun 範例 3:用 for...range 遍歷映射(Map)

birdFavorites := map[string]string{
    "麻雀": "櫻花樹下",
    "鴿子": "噴泉旁",
    "燕子": "老榕樹上",
}
for bird, spot := range birdFavorites {
    fmt.Printf("%s 喜歡待在 %s\n", bird, spot)
}

Map 的遍歷讓你一次知道鳥兒和牠們偏愛的花園角落,生活味十足[10]。


fun 範例 4:用 for...range 遍歷字串裡的每個字元(rune)

gardenNote := "早晨鳥"
for index, char := range gardenNote {
    fmt.Printf("字元 %d 是 %c\n", index, char)
}

支援多國語系的字串遍歷,完美呈現每個字的魅力[10]。


傳統 for 與 for...range 差異與使用時機比較

特性 傳統 for 迴圈 for...range 迴圈
語法結構 類似 C 語言,需手動控制索引和條件 簡潔語法,一次回傳索引及元素值
對資料存取 直接存取原資料,適合需改變索引或逆向迭代 取得元素複本,對原資料不直接修改
使用場合 需要精確控制索引、跳過元素或倒序迭代時(簡單判別:重複執行指令) 需要簡單易讀迭代元素,遍歷陣列、切片、Map(知道所有矩陣元素) 等
字串處理 較不適合因需手動處理 rune 能正確處理 Unicode 字元(rune)
可讀性 程式碼較為冗長,容易出錯 較簡潔易懂,符合 Go 語言習慣
效能 略優於 range,因為不需複製元素 複製元素,對大型結構在特定情況下可能稍慢

掌握這兩種迴圈的靈活運用,可以針對不同任務選擇最合適的方式,寫出更直觀且效能佳的程式。下次遇到資料重複處理,馬上想到這兩位好幫手!



上一篇
Day 17 : Go 基礎篇總複習
下一篇
Day 19 :【Go 練習題】用 for...range 幫助小偵探統計「神秘盒子」裡的寶藏
系列文
後端攻略筆記20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言