[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]

위의 예제에서 MySlicesort.Interface를 구현하고, Less 메서드를 정의하여 정수형 슬라이스를 오름차순으로 정렬합니다.

결론

sort 패키지의 비교 함수 작성은 sort.Interface를 구현하는 것으로 이루어집니다. 이를 통해 사용자 정의 타입 또는 특정 조건에 따라 요소를 정렬할 수 있습니다.