In der Go-Sprache ist Slice leistungsfähiger, flexibler und bequemer als ein Array und eine leichtgewichtige Datenstruktur. Das Slice ist eine Sequenz variabler Länge, die Elemente eines ähnlichen Typs speichert, es ist Ihnen nicht erlaubt, unterschiedliche Typen von Elementen in demselben Slice zu speichern.
In der Go-Sprache dürfen Sie einen Slice-Stall mit der Funktion SliceStable() sortieren . Diese Funktion sortiert den angegebenen Slice unter Berücksichtigung der angegebenen less-Funktion, wobei die ursprüngliche Reihenfolge gleicher Elemente beibehalten wird. Diese Funktion gerät in Panik, wenn die angegebene Schnittstelle kein Slice ist. Es ist unter dem Sortierpaket definiert, sodass Sie das Sortierpaket in Ihr Programm importieren müssen, um auf die SliceStable-Funktion zugreifen zu können.

Syntax:

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

Beispiel:

// 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)
}

Ausgabe:

Autoren nach Namen sortieren:
[{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}]

Autor nach der Gesamtzahl der Artikel sortieren:
[{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}]

Autoren nach ihren IDs sortieren:
[{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}]