GoLang: Как выполнить операцию GROUP BY над структурой в golang? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть следующая структура.

type resources struct {
   Id int
   Start string
   End string
   Resource map[string][]string
}

Мои данные в ресурсах struct [] следующие:

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"]}"

Я добился этого, сделав для l oop, но это звучит дорого при работе с большими данными. Есть ли другой эффективный способ, которым мы можем достичь этого без зацикливания? Я проверил это https://github.com/ahmetb/go-linq, чтобы реализовать LINQ для моего сценария. Не могу сделать это для моего типа структуры.

1 Ответ

0 голосов
/ 27 апреля 2020

Вы можете сначала отсортировать массив ресурсов по времени запуска. Таким образом, поиск нужных записей по дате начала с помощью бинарного поиска будет O (ln base 2) размера массива. Смотрите пример пакета сортировки на https://golang.org/pkg/sort/#example__sortKeys

...