Сортировка фрагмента структур с помощью вложенных фрагментов
В Go вы можете сортировать фрагменты пользовательских структур с помощью встроенного пакета сортировки. Рассмотрим следующий код, который определяет две структуры, Parent и Child, представляющие отношения родитель-потомок:
type Parent struct {
id string
children []Child
}
type Child struct {
id string
}
Предположим, у вас есть фрагмент родительских структур и вы хотите отсортировать их по двум критериям:
Критерии сортировки:
Решение:
Приведенный фрагмент кода отвечает требованиям сортировки:
``
/ / сортируем каждого родителя в родительском срезе по идентификатору
sort.Slice(parents, func(i, j int) bool {
return parents[i].id// для каждого родителя отсортируйте каждого дочернего элемента в дочернем срезе по идентификатору
for _, родительский := диапазон родителей {sort.Slice(parent.children, func(i, j int) bool { return parent.children[i].id}
``Функция sort.Slice напрямую работает со срезами, исключая необходимы промежуточные контейнеры.
- Он сортирует родительский срез на основе Parent.id.
- Для каждого родительского элемента в отсортированном родительском срезе он сортирует дочерний срез на основе Child.id с использованием вложенного цикла.
Результат соответствует ожидаемому выводу:
[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3