1 回答
TA贡献1869条经验 获得超4个赞
这是因为您正在取消编组到映射中,并且映射是无序的,就像 JSON 对象一样。
因此,每次循环时,您都会得到不同的值。TimeSeriesDailyTimeSeriesDaily
您可以通过以下代码解决此问题,
timeSeries := make([]map[string]DataElement, 0)
for date, data := range y.TimeSeriesDaily {
timeSeries = append(timeSeries, map[string]DataElement{date: data})
}
sort.Slice(timeSeries, func(i, j int) bool {
layout := "2006-01-02"
var date1 time.Time
for k := range timeSeries[i] {
date1, err = time.Parse(layout, k)
if err != nil {
fmt.Println(err)
}
}
var date2 time.Time
for k := range timeSeries[j] {
date2, err = time.Parse(layout, k)
if err != nil {
fmt.Println(err)
}
}
return date1.Before(date2)
})
for k, v := range timeSeries[len(timeSeries)-1] {
fmt.Println("Closing Date: " + k)
fmt.Println("Closing Price: " + v.FourClose)
}
输出:
Closing Date: 2021-05-07
Closing Price: 1931.3
repl.it 链接:https://replit.com/@RamarajaRamanuj/SortTimeSlice
查看输出会很慢,因为 repl.it 启动需要一些时间。
在这里,您将遍历地图,将条目存储在切片中,并按日期的升序对切片进行排序。
现在,切片按最早日期作为第一个元素,最晚日期作为最后一个元素排序。您只需选择最后一个元素即可了解最新的收盘价。timeSeries
- 1 回答
- 0 关注
- 69 浏览
添加回答
举报