[go] Sort 패키지의 타입 변환
Go 언어에서 sort
패키지는 슬라이스를 정렬하는 기능을 제공합니다. 때때로 정렬에 사용되는 타입이 슬라이스 내의 원소들과 다를 수 있습니다. 이런 경우에는 타입을 변환해야 합니다.
이번 글에서는 sort
패키지를 사용할 때 발생할 수 있는 다양한 타입 변환에 대해 알아보겠습니다.
1. 타입 변환
슬라이스의 원소들은 보통 정렬 가능한 타입이어야 합니다. 그러나 때로는 슬라이스의 원소들이 정렬되어야 하는 타입과 일치하지 않을 수 있습니다. 이럴 때에는 타입 변환을 사용하여 원하는 타입으로 변환할 수 있습니다.
예를 들어, 정수 슬라이스를 정렬할 필요가 있을 때가 있습니다. 그럴 때는 sort.IntSlice
를 사용하여 원하는 타입으로 변환할 수 있습니다.
ints := []int{4, 2, 1, 3}
sort.Sort(sort.IntSlice(ints))
2. 사용자 정의 타입의 변환
사용자가 정의한 타입을 정렬하기 위해서는 해당 타입에 Len
, Less
, Swap
메서드를 구현해야 합니다. 그 후, 해당 타입을 sort.Sort
함수에 전달하여 정렬할 수 있습니다.
예를 들어, 사용자가 정의한 Person
구조체를 나이를 기준으로 정렬하고 싶다면 다음과 같이 사용자 정의 타입을 변환하여 정렬할 수 있습니다.
type Person struct {
Name string
Age int
}
type ByAge []Person
func (p ByAge) Len() int { return len(p) }
func (p ByAge) Less(i, j int) bool { return p[i].Age < p[j].Age }
func (p ByAge) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
people := []Person{
{"Alice", 25},
{"Bob", 30},
{"Charlie", 20},
}
sort.Sort(ByAge(people))
결론
Go 언어의 sort
패키지를 사용할 때에는 다양한 타입 변환을 활용하여 슬라이스를 정렬할 수 있습니다. 필요에 따라서는 사용자 정의 타입을 통해서도 슬라이스를 정렬할 수 있으며, 이러한 유연성은 Go 언어의 강력한 기능 중 하나입니다.
위의 예제 코드를 보고 싶다면 여기를 참고하세요.