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 패키지에서 함수로 제공하고 있습니다.