我有一个结构,如下图所示。
type resources struct {
Id int
Start string
End string
Resource map[string][]string
}
我在[]resources结构中的数据如下。
1, "2020-04-27T05:30:00","2020-04-27T06:30:00", "{"room":["101","102"], equipments: ["stethescope"]}"
2, "2020-04-27T05:30:00","2020-04-27T06:30:00", "{"room":["102"], equipments: ["thermometer"]}"
现在,我需要根据开始和结束时间进行分组,以得到我想要的输出,如下图。
"{"room":["101","102"], equipments: ["stethescope","thermometer"]}"
我已经实现了这个目标,通过做一个for循环,但这听起来很昂贵,当处理较大的数据。有没有其他有效的方法可以在不循环的情况下实现这个目标?我检查了这个 https:/github.comahmetbgo-linq。 来为我的方案实现LINQ。不能为我的结构类型做。
你可以先按开始时间对资源数组进行排序。 这样通过二进制搜索按起始日期找到你需要的条目,将是数组大小的O(ln base 2)。请看以下排序包的例子 https:/golang.orgpkgsort#example__sortKeys。