1 回答

TA貢獻1860條經驗 獲得超9個贊
下一項確實是 ,但如果是最后一個元素的索引,則沒有下一項,在這種情況下是無效的索引,并且嘗試使用它會導致運行時死機。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)
}
}
另一種選擇是在一個少一個切片上劃一個范圍(不包括最后一個元素),因此無需檢查 ,肯定還有另一個元素: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)
}
}
在這種情況下,您必須考慮的是,如果是空的,因為如果是,則上述切片操作將再次驚慌失措,因此請檢查: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)
}
}
}
請注意,我們可以檢查是否,因為即使不會有恐慌,如果,也會有迭代。len(value.Values) > 1len = 10
另請注意,在排除最后一個元素的切片上進行范圍不會訪問最后一個元素(顯然),因此,如果您要對元素執行任何其他操作,這可能不可行,但在您的示例中,它們是等效的。
- 1 回答
- 0 關注
- 98 瀏覽
添加回答
舉報