Classificando uma fatia de estruturas com fatias aninhadas
No Go, você pode classificar fatias de estruturas personalizadas usando o pacote de classificação integrado. Considere o código a seguir que define duas estruturas, Pai e Filho, representando um relacionamento pai-filho:
type Parent struct {
id string
children []Child
}
type Child struct {
id string
}
Suponha que você tenha uma fatia de estruturas Parent e queira classificá-las com base em dois critérios:
Critérios de classificação:
Solução:
O snippet de código fornecido atende ao requisito de classificação:
``
// classifique cada Parent na fatia dos pais por Id
sort.Slice(parents, func (i, j int) bool {
return parents[i].id// para cada Pai, classifique cada Filho na fatia de filhos por Id
for _, pai := range pais {sort.Slice(parent.children, func(i, j int) bool { return parent.children[i].id}
``A função sort.Slice opera diretamente em fatias, eliminando o necessidade de contêineres intermediários.
- Ele classifica a fatia dos pais com base em Parent.id.
- Para cada pai na fatia dos pais classificada, ele classifica a fatia dos filhos com base em Child.id usando um loop aninhado.
O resultado se alinha com a saída esperada:
[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3