[go] Sort 패키지의 비교 함수 작성 방법
sort
패키지는 Go 프로그래밍 언어에서 슬라이스를 정렬하는 데 사용됩니다. 슬라이스의 요소를 정렬하기 위해서는 각 요소의 비교가 필요한데, 이를 위해 비교 함수(Comparator)를 정의해야 합니다.
비교 함수 정의하기
비교 함수는 sort.Interface
인터페이스에 정의된 Less
메서드를 구현해야 합니다. 이 메서드는 두 인덱스를 받아 두 요소를 비교하고, 첫 번째 요소가 두 번째 요소보다 작으면 true
, 그렇지 않으면 false
를 반환해야 합니다.
다음은 sort.Interface
인터페이스의 정의입니다.
type Interface interface {
Len() int
Less(i, j int) bool
Swap(i, j int)
}
비교 함수를 작성하는 예제는 다음과 같습니다.
type MySlice []int
func (s MySlice) Len() int {
return len(s)
}
func (s MySlice) Less(i, j int) bool {
return s[i] < s[j]
}
func (s MySlice) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
// 사용 예시
mySlice := MySlice{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}
sort.Sort(mySlice)
fmt.Println(mySlice) // [1 1 2 3 3 4 5 5 5 6 9]
위의 예제에서 MySlice
는 sort.Interface
를 구현하고, Less
메서드를 정의하여 정수형 슬라이스를 오름차순으로 정렬합니다.
결론
sort
패키지의 비교 함수 작성은 sort.Interface
를 구현하는 것으로 이루어집니다. 이를 통해 사용자 정의 타입 또는 특정 조건에 따라 요소를 정렬할 수 있습니다.