Go 的 range 回傳 index 與 value

for ... range 一次給出兩個值:前面是 index、後面是 value。不需要的那個要用 _ 丟掉,否則 編譯不會過

var x [4]float64        // 陣列:型別前面加 [長度]
x[0] = 23
x[1] = 45
 
var total float64 = 0
for _, value := range x {   // 用不到 index,用 _ 丟掉
    total += value
}
fmt.Println(total / float64(len(x)))

只寫一個變數時拿到的是 index,不是 value——這是從 JS for...of / Python for x in 過來最容易踩的地方:

for i := range x {      // i 是 index
}

[4]float64 的長度是型別的一部分,[4]float64[5]float64 是不同型別;長度可變的是 slice([]float64)。

相關:Go 只有 for 一種迴圈Slice 是看向底層 array 的一扇窗戶Go 1.22 起迴圈變數每次疊代各自一份