가끔 일반적인 순서가 아닌 특정한 순서로 컬렉션을 정렬하고 싶을때가 있습니다. 예를 들면, 문자열들을 알파벳 순서가 아닌 길이를 기준으로 정렬하고 싶은 경우가 있습니다. 이번 장에 Go에서의 커스텀 정렬 예시가 있습니다. |
|
package main
|
|
import "sort"
import "fmt"
|
|
Go에서 커스텀 함수로 정렬을 하려면, 그에 해당하는 타입이 필요합니다. 우리는 여기서 내장 타입인 |
type ByLength []string
|
우리가 정의한 타입에 |
func (s ByLength) Len() int {
return len(s)
}
func (s ByLength) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s ByLength) Less(i, j int) bool {
return len(s[i]) < len(s[j])
}
|
구현한 것들을 가지고 원래의 |
func main() {
fruits := []string{"peach", "banana", "kiwi"}
sort.Sort(ByLength(fruits))
fmt.Println(fruits)
}
|
프로그램을 실행하면 우리가 원하던대로 문자열 길이를 기준으로 정렬된 리스트가 보여집니다. |
$ go run sorting-by-functions.go
[kiwi peach banana]
|
커스텀 타입을 생성하고, 해당 타입에 세 개의 |
다음 예제: 패닉.