[Golang] 정렬(Sort)를 위한 sort.Interface 샘플 코드

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다