Golang은 효율적인 동시성과 간단한 구문으로 인해 매우 인기 있는 프로그래밍 언어로 백엔드 및 네트워크 프로그래밍에 매우 적합합니다. Golang에서 정렬 패키지는 배열, 슬라이스, 문자열 및 기타 유형을 정렬할 수 있는 매우 편리한 방법을 제공합니다. 또한 매우 완벽한 사용자 정의 정렬 방법을 제공합니다. 그리고 그것을 구현하십시오.
sort 패키지 내장 함수
sort 패키지는 세 가지 내장 정렬 기능을 제공합니다:
다음은 세 가지 내장 기능을 사용하는 방법입니다.
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) }
출력 결과:
[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]
sort 패키지 사용자 정의 정렬
내장된 정렬 기능 외에도 sort 패키지는 매우 편리한 방법을 제공합니다. 정렬 기능을 사용자 정의합니다. Golang에서는 sort.Interface 인터페이스를 구현하여 사용자 정의 정렬 방법을 구현할 수 있습니다. sort.Interface 인터페이스는 다음 세 가지 메소드를 구현해야 합니다.
type Interface interface { // 返回数据集合的元素数量 Len() int // 比较两个元素的大小,返回是否应该交换位置 Less(i, j int) bool // 交换两个元素的位置 Swap(i, j int) }
sort.Interface 인터페이스를 통해 사용자 정의 정렬을 구현합니다. 다음은 문자열에서 문자 발생 횟수에 따라 정렬하는 예입니다.
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) }
출력 결과 :
[pear pie apple banana]
위의 예에서 볼 수 있듯이 sort.Interface 인터페이스를 통해 사용자 정의 정렬 방법을 구현하는 것이 매우 편리합니다. 세 가지 방법만 구현하면 됩니다. 사용자 정의 정렬 시 두 요소의 크기를 비교하여 필요한 정렬 방법을 얻을 수 있습니다.
정렬 패키지 사용 시 주의 사항
정렬 패키지를 사용할 때 주의해야 할 사항은 다음과 같습니다.
위 내용은 Golang 정렬 특정 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!