Vit*_*ook 3 null pointers loops go slice
这是我的代码的和平:
candles := make([]*base.OHLCVItem, 100)
for i, item := range msgStrSl {
newCandle, err := parseCandleFromString(item)
newCandle.Pair = pair
newCandle.Timeframe = timeframe
if err != nil {
bWsLog.WithError(err).Errorf("Failed to parse candle %d.", i)
continue
}
if newCandle == nil {
panic("nil candle")
}
candles = append(candles, newCandle)
bWsLog.Infof("Sn candle: %d", candles[len(candles)-1].Timestamp)
}
bWsLog.Info(candles[0])
bWsLog.Info(candles[1])
sort.SliceStable(candles, func(i, j int) bool {
bWsLog.Infof("%d %+v %+v", len(candles), candles[i], candles[j])
return candles[i].Timestamp < candles[j].Timestamp
}
Run Code Online (Sandbox Code Playgroud)
循环后记录该值为零.但是循环中的log打印对象(所以它在那一点上不是零)我是Go的新手,我可以弄清楚为什么切片中的所有元素在循环结束后变为零.你能帮我解决这个问题吗?
你创建一个包含100个指针的列表,所有都是零,然后在101位附加到它.你打印最后一个元素,它确实不是零 - 但它也不是第一个.它是101,102,......等等.然后你打印前两个元素,它们确实是零.你基本上将一堆指针附加到100个nils的列表中.
只需将第一行更改为:
candles := make([]*base.OHLCVItem, 0, 100)
Run Code Online (Sandbox Code Playgroud)
这将创建一个空切片,但容量为100.
归档时间: |
|
查看次数: |
57 次 |
最近记录: |