¿Cómo ordenar una rebanada en Golang?

El segmento de lenguaje de Go es más poderoso, flexible y conveniente que una array y es una estructura de datos liviana. El segmento es una secuencia de longitud variable que almacena elementos de un tipo similar, no está permitido almacenar diferentes tipos de elementos en el mismo segmento.
En el lenguaje Go, puede ordenar un segmento con la ayuda de la función Slice() . Esta función ordena el segmento especificado dada la función menos proporcionada. El resultado de esta función no es estable. Entonces, para una ordenación estable, puede usar SliceStable. Y esta función entra en pánico si la interfaz especificada no es del tipo segmento. Se define en el paquete de clasificación, por lo que debe importar el paquete de clasificación en su programa para acceder a la función Slice.

Sintaxis:

func Slice(a_slice interface{}, less func(p, q int) bool)

Ejemplo:

// Go program to illustrate
// how to sort a slice
package main
  
import (
    "fmt"
    "sort"
)
  
// Main function
func main() {
  
    // Creating and initializing
    // a structure
    Author := []struct {
        a_name    string
        a_article int
        a_id      int
    }{
        {"Mina", 304, 1098},
        {"Cina", 634, 102},
        {"Tina", 104, 105},
        {"Rina", 10, 108},
        {"Sina", 234, 103},
        {"Vina", 237, 106},
        {"Rohit", 56, 107},
        {"Mohit", 300, 104},
        {"Riya", 4, 101},
        {"Sohit", 20, 110},
    }
  
    // Sorting Author by their name
    // Using Slice() function
    sort.Slice(Author, func(p, q int) bool { 
      return Author[p].a_name < Author[q].a_name })
      
    fmt.Println("Sort Author according to their names:")
    fmt.Println(Author)
  
    // Sorting Author by their
    // total number of articles
    // Using Slice() function
    sort.Slice(Author, func(p, q int) bool { 
       return Author[p].a_article < Author[q].a_article })
      
    fmt.Println()
    fmt.Println("Sort Author according to their"+
                    " total number of articles:")
      
    fmt.Println(Author)
  
    // Sorting Author by their ids
    // Using Slice() function
    sort.Slice(Author, func(p, q int) bool { 
     return Author[p].a_id < Author[q].a_id })
      
    fmt.Println()
    fmt.Println("Sort Author according to the their Ids:")
    fmt.Println(Author)
}

Producción:

Ordenar autor según sus nombres:
[{Cina 634 102} {Mina 304 1098} {Mohit 300 104} {Rina 10 108} {Riya 4 101} {Rohit 56 107} {Sina 234 103} {Sohit 20 110} {Tina 104 105} {Viña 237 106}]

Ordenar autor según su número total de artículos:
[{Riya 4 101} {Rina 10 108} {Sohit 20 110} {Rohit 56 107} {Tina 104 105} {Sina 234 103} {Vina 237 106} {Mohit 300 104 } {Mina 304 1098} {Cina 634 102}]

Ordenar autor según sus ID:
[{Riya 4 101} {Cina 634 102} {Sina 234 103} {Mohit 300 104} {Tina 104 105} {Vina 237 106} {Rohit 56 107} {Rina 10 108} { Sohit 20 110} {Mina 304 1098}]

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *