Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie das Sortierpaket zum Sortieren in Golang

So verwenden Sie das Sortierpaket zum Sortieren in Golang

PHPz
PHPzOriginal
2023-04-10 14:17:20932Durchsuche

Die Sortierimplementierung in der Go-Sprache wird hauptsächlich über das Sortierpaket implementiert. Das Sortierpaket bietet eine Standard-Sortierschnittstelle, die es uns ermöglicht, verschiedene Arten von Daten einfach zu sortieren. In diesem Artikel wird erläutert, wie Sie das Sortierpaket zum Sortieren in Golang verwenden.

Implementierungsprinzip des Sortierpakets

Das Sortierpaket implementiert hauptsächlich die Sortierung über die Schnittstelle sort.Interface. Es verfügt über drei Methoden:

  • Len() int: Gibt die Anzahl der zu sortierenden Elemente zurück.
  • Less(i, j int) bool: Wenn Element i vor Element j platziert werden soll, wird true zurückgegeben, andernfalls wird false zurückgegeben.
  • Swap(i, j int): Tauschen Sie die Positionen der Elemente i und j. Das Paket

sort bietet die folgenden Funktionen zum Sortieren:

  • func Ints(a []int): Int-Typ-Slices in aufsteigender Reihenfolge sortieren.
  • func Float64s(a []float64): Slices vom Typ float64 in aufsteigender Reihenfolge sortieren.
  • func Strings(a []string): String-Typ-Slices in aufsteigender Reihenfolge sortieren.
  • func IntsAreSorted(a []int) bool: Bestimmen Sie, ob das Slice vom Typ int sortiert wurde.
  • func Float64sAreSorted(a []float64) bool: Bestimmen Sie, ob Slices vom Typ float64 sortiert wurden.
  • func StringsAreSorted(a []string) bool: Bestimmt, ob String-Typ-Slices sortiert wurden.
  • func Sort(data Interface): Daten sortieren, die sort.Interface implementieren.

Beispielcode

Hier ist ein Beispielcode zum Sortieren von Slices vom Typ int:

package main

import (  
    "fmt"
    "sort"
)

func main() {  
    data := []int{9, 6, 3, 8, 5, 2, 7, 4, 1}
    sort.Ints(data)
    fmt.Println(data)
}

Die Ausgabe ist:

[1 2 3 4 5 6 7 8 9]

Hier ist ein Beispielcode zum Sortieren mit der Schnittstelle sort.Interface:

package main  
import (  
    "fmt"
    "sort"
)

type Person struct {  
    Name string
    Age  int
}

type ByName []Person  
func (this ByName) Len() int {
    return len(this)
}
func (this ByName) Less(i, j int) bool {  
   return this[i].Name < this[j].Name
}
func (this ByName) Swap(i, j int) {  
   this[i], this[j] = this[j], this[i]
}

func main() {  
    people := []Person{
      {"Bob", 31},
      {"John", 42},
      {"Jane", 29},
      {"Michael", 17},
      {"Chris", 51},
      {"Sarah", 37},
    }
    sort.Sort(ByName(people))
    fmt.Println(people)
}

Das Ausgabeergebnis ist:

[{Bob 31} {Chris 51} {Jane 29} {John 42} {Michael 17} {Sarah 37}]

Der obige Code definiert zunächst eine Person-Struktur und einen ByName-Typ. Der Typ ByName implementiert drei Methoden der Schnittstelle sort.Interface, mit denen dem Sortierpaket mitgeteilt wird, wie zwei Elemente verglichen und Elemente ausgetauscht werden sollen. Anschließend wird eine Personenvariable zum Speichern von Personentypdaten definiert. Abschließend wird die Funktion sort.Sort aufgerufen, um die Personen in aufsteigender Reihenfolge nach Namen zu sortieren und die Ergebnisse auszugeben.

Zusammenfassung

In diesem Artikel werden die Methode zur Verwendung des Sortierpakets zum Sortieren in Golang, das Implementierungsprinzip des Sortierpakets und einige Beispielcodes vorgestellt. Für die Sortierung der Datentypen müssen wir lediglich die drei Methoden in der Schnittstelle sort.Interface implementieren. Das Sortierpaket stellt bereits Sortierfunktionen für gängige Datentypen wie int, float64 und string bereit Rufen Sie Can an.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Sortierpaket zum Sortieren in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn