2 回答
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)您在表達(dá)式中使用數(shù)組時(shí),您將獲得它的“值”(即數(shù)組的完整新副本)。這包括在循環(huán)的范圍表達(dá)式中使用數(shù)組。因此,當(dāng)您打印時(shí),v您正在打印副本,但實(shí)際的nums數(shù)組已更改。
在切片而不是數(shù)組上循環(huán)可以滿足您的期望:
var nums [2]int
for i, v := range nums[:] {
if i == 0 {
nums[i+1]++
} else {
fmt.Print(v)
}
}
TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
范圍創(chuàng)建數(shù)組(及其值)的副本,因此可以迭代它們。
如果您計(jì)劃在迭代期間改變數(shù)組(或其中的一個(gè)切片),最好直接引用數(shù)組/切片 - 因?yàn)樵撝祵⑹且粋€(gè)v副本,并且在您的代碼中是數(shù)組的舊副本。
所以嘗試這樣的事情:
var nums [2]int
for i := range nums {
if i == 0 {
nums[i+1]++
} else {
fmt.Print(nums[i])
}
}
- 2 回答
- 0 關(guān)注
- 195 瀏覽
添加回答
舉報(bào)
