Heim >Backend-Entwicklung >Golang >Golang sortenspezifische Implementierung
Golang ist eine sehr beliebte Programmiersprache. Aufgrund seiner effizienten Parallelität und einfachen Syntax ist es eine sehr geeignete Sprache für die Backend- und Netzwerkprogrammierung. In Golang bietet das Sortierpaket eine sehr praktische Möglichkeit zum Sortieren von Arrays, Slices, Zeichenfolgen und anderen Typen. Die Verwendung des Sortierpakets wird im Folgenden ausführlich vorgestellt und umsetzen.
integrierte Funktionen des Sortierpakets
sort-Paket bietet drei integrierte Sortierfunktionen:
Im Folgenden erfahren Sie, wie Sie diese drei integrierten Funktionen verwenden:
package main import ( "fmt" "sort" ) func main() { ints := []int{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5} sort.Ints(ints) fmt.Println(ints) floats := []float64{3.1, 1.4, 4.1, 1.5, 5.9, 2.6, 5.3, 5.5, 3.5} sort.Float64s(floats) fmt.Println(floats) strings := []string{"golang", "is", "an", "awesome", "language"} sort.Strings(strings) fmt.Println(strings) }
Ausgabeergebnisse:
[1 1 2 3 3 4 5 5 5 6 9] [1.4 1.5 2.6 3.1 3.5 4.1 5.3 5.5 5.9] [an awesome golang is language]
Benutzerdefinierte Sortierung des Sortierpakets
Zusätzlich zu den integrierten Sortierfunktionen bietet das Sortierpaket auch eine sehr praktische Möglichkeit um die Sortierfunktion anzupassen. In Golang können wir benutzerdefinierte Sortiermethoden implementieren, indem wir die Schnittstelle sort.Interface implementieren. Die Schnittstelle sort.Interface muss die folgenden drei Methoden implementieren:
type Interface interface { // 返回数据集合的元素数量 Len() int // 比较两个元素的大小,返回是否应该交换位置 Less(i, j int) bool // 交换两个元素的位置 Swap(i, j int) }
Wir implementieren die benutzerdefinierte Sortierung über die Schnittstelle sort.Interface. Hier ist ein Beispiel für die Sortierung nach der Anzahl des Vorkommens von Buchstaben in einer Zeichenfolge:
package main import ( "fmt" "sort" ) type StringArray []string func (s StringArray) Len() int { return len(s) } // 自定义排序方式:按照字符串中字母出现次数升序排序 func (s StringArray) Less(i, j int) bool { return less(s[i], s[j]) } // 交换两个元素的位置 func (s StringArray) Swap(i, j int) { s[i], s[j] = s[j], s[i] } // 判断字符串 a 是否小于字符串 b func less(a, b string) bool { if len(a) < len(b) { return true } else if len(a) > len(b) { return false } for i := 0; i < len(a); i++ { if a[i] < b[i] { return true } else if a[i] > b[i] { return false } } return false } func main() { strings := StringArray{"banana", "apple", "pear", "pie"} sort.Sort(strings) fmt.Println(strings) }
Ergebnis ausgeben :
[pear pie apple banana]
Wie aus dem obigen Beispiel ersichtlich ist, ist es sehr praktisch, eine benutzerdefinierte Sortiermethode über die Schnittstelle sort.Interface zu implementieren. Sie müssen nur drei Methoden implementieren. Bei der benutzerdefinierten Sortierung können wir die von uns benötigte Sortiermethode erreichen, indem wir die Größe zweier Elemente vergleichen.
Hinweise zur Verwendung des Sortierpakets
Bei der Verwendung des Sortierpakets müssen Sie einige Dinge beachten:
Das obige ist der detaillierte Inhalt vonGolang sortenspezifische Implementierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!