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 起迴圈變數每次疊代各自一份