"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se ordena una porción de estructuras con porciones anidadas en Go según múltiples criterios?

¿Cómo se ordena una porción de estructuras con porciones anidadas en Go según múltiples criterios?

Publicado el 2024-11-08
Navegar:582

How do you sort a slice of structs with nested slices in Go based on multiple criteria?

Ordenar una porción de estructuras con porciones anidadas

En Go, puede ordenar porciones de estructuras personalizadas utilizando el paquete de clasificación integrado. Considere el siguiente código que define dos estructuras, padre e hijo, que representan una relación padre-hijo:

type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}

Supongamos que tiene una porción de estructuras principales y desea ordenarlas según dos criterios:

Criterios de clasificación:

  1. Ordenar el segmento principal por Parent.id en orden ascendente.
  2. Para cada padre, ordene el segmento secundario por Child.id en orden ascendente dentro del padre.

Solución:

El fragmento de código proporcionado aborda el requisito de clasificación:

``
// ordenar cada padre en el segmento de padres por Id
sort.Slice(parents, func(i, j int) bool {

return parents[i].id 

// para cada padre, ordene cada hijo en el segmento de niños por Id.
para _, padre := rango de padres {

sort.Slice(parent.children, func(i, j int) bool { 
    return parent.children[i].id 

}
``

La función sort.Slice opera directamente en sectores, eliminando la necesidad de contenedores intermedios.

  1. Ordena el segmento de padres según Parent.id.
  2. Para cada padre en el segmento de padres ordenados, ordena el segmento de niños según Child.id usando un bucle anidado.

El resultado se alinea con el resultado esperado:

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3