Na linguagem Go, o slice é mais poderoso, flexível, conveniente do que um array e é uma estrutura de dados leve. A fatia é uma sequência de comprimento variável que armazena elementos de um tipo semelhante; você não tem permissão para armazenar tipos diferentes de elementos na mesma fatia.
Na linguagem Go, você pode classificar uma fatia estável usando a função SliceStable() . Esta função classifica a fatia especificada dada a função less especificada, mantendo a ordem original de elementos iguais. Esta função entra em pânico se a interface especificada não for uma fatia. Ele é definido no pacote de classificação, portanto, você deve importar o pacote de classificação em seu programa para acessar a função SliceStable.

Sintaxe:

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

Exemplo:

// Go program to illustrate how
// to sort a slice stable
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},
        {"Mina", 34, 109},
        {"Cina", 634, 102},
        {"Mina", 4, 100},
        {"Rohit", 56, 1098},
        {"Cina", 634, 102},
        {"Mina", 39, 1098},
        {"Sohit", 20, 110},
    }
  
    // Sorting Author by their names
    // Using SliceStable() function
    sort.SliceStable(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 the total articles
    // Using SliceStable() function
    sort.SliceStable(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 SliceStable() function
    sort.SliceStable(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)
}

Saída:

Classifique o autor de acordo com seus nomes:
[{Cina 634 102} {Cina 634 102} {Cina 634 102} {Mina 304 1098} {Mina 34 109} {Mina 4 100} {Mina 39 1098} {Rohit 56 1098} {Sohit 20 110} {Tina 104 105}]

Classifique o autor de acordo com o número total de artigos:
[{Mina 4 100} {Sohit 20 110} {Mina 34 109} {Mina 39 1098} {Rohit 56 1098} {Tina 104 105} {Mina 304 1098} {Cina 634 102 } {Cina 634 102} {Cina 634 102}]

Classifique o autor de acordo com seus IDs:
[{Mina 4 100} {Cina 634 102} {Cina 634 102} {Cina 634 102} {Tina 104 105} {Mina 34 109} {Sohit 20 110} {Mina 39 1098} { Rohit 56 1098} {Mina 304 1098}]