1 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
下一項(xiàng)確實(shí)是 ,但如果是最后一個(gè)元素的索引,則沒有下一項(xiàng),在這種情況下是無效的索引,并且嘗試使用它會(huì)導(dǎo)致運(yùn)行時(shí)死機(jī)。value.Values[index+1]indexindex+1value.Values
所以檢查索引:
for index, currentRow := range value.Values {
var nextRow Value
if index < timeSeriesDataCount && index < len(value.Values)-1 {
nextRow = value.Values[index+1]
fmt.Print(nextRow)
}
}
另一種選擇是在一個(gè)少一個(gè)切片上劃一個(gè)范圍(不包括最后一個(gè)元素),因此無需檢查 ,肯定還有另一個(gè)元素:index
for index, currentRow := range value.Values[:len(value.Values)-1] {
var nextRow Value
if index < timeSeriesDataCount {
nextRow = value.Values[index+1]
fmt.Print(nextRow)
}
}
在這種情況下,您必須考慮的是,如果是空的,因?yàn)槿绻牵瑒t上述切片操作將再次驚慌失措,因此請(qǐng)檢查:value.Values
if len(value.Values) > 0 {
for index, currentRow := range value.Values[:len(value.Values)-1] {
var nextRow Value
if index < timeSeriesDataCount {
nextRow = value.Values[index+1]
fmt.Print(nextRow)
}
}
}
請(qǐng)注意,我們可以檢查是否,因?yàn)榧词共粫?huì)有恐慌,如果,也會(huì)有迭代。len(value.Values) > 1len = 10
另請(qǐng)注意,在排除最后一個(gè)元素的切片上進(jìn)行范圍不會(huì)訪問最后一個(gè)元素(顯然),因此,如果您要對(duì)元素執(zhí)行任何其他操作,這可能不可行,但在您的示例中,它們是等效的。
- 1 回答
- 0 關(guān)注
- 107 瀏覽
添加回答
舉報(bào)