Go에서 데이터 요소들을 가지는 슬라이스를 정렬하기 위해서는 sort 패키지의 Interface 인터페이스의 Len, Less, Swap 매서드를 구현해야 합니다. 아래의 코드는 문자열 데이터 요소를 가지는 슬라이스에 대한 정렬에 대한 sort.Interface의 구현 코드 및 활용 코드입니다.
package main
import (
"fmt"
"sort"
)
type StringSlice []string
func (p StringSlice) Len() int { return len(p) }
func (p StringSlice) Less(i, j int) bool { return p[i] < p[j] }
func (p StringSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
func main() {
names := []string{"이효숙", "김형준", "김종수", "김졍연", "김도현" }
fmt.Println(names)
sort.Sort(StringSlice(names))
//sort.Strings(names)
fmt.Println(names)
}
실행해 보면 다음과 같이 정렬되 결과를 볼 수 있습니다.
[이효숙 김형준 김종수 김졍연 김도현] [김도현 김졍연 김종수 김형준 이효숙]
참고로 19번는 20번 코드로 대체가 가능한데요. 문자열 타입처럼 기본형 타입에 대한 데이터를 구성하는 슬라이스에 대한 정렬은 이미 sort 패키지에서 함수로 제공하고 있습니다.
