[go] Sort 패키지의 사용 사례
Sort
패키지는 Go 프로그래밍 언어에서 데이터 슬라이스를 정렬하기 위한 기능을 제공합니다. 이 패키지는 유용한 정렬 알고리즘을 포함하고 있어 다양한 사용 사례에 적용할 수 있습니다. 이번 글에서는 Sort
패키지의 몇 가지 사용 사례를 살펴보겠습니다.
정렬된 문자열 슬라이스 생성
package main
import (
"fmt"
"sort"
)
func main() {
strs := []string{"c", "a", "b"}
sort.Strings(strs)
fmt.Println("정렬된 문자열 슬라이스:", strs)
}
위의 예제 코드에서 sort.Strings(strs)
를 사용하여 문자열 슬라이스를 정렬하고 있습니다. 결과는 a
, b
, c
가 순서대로 출력될 것입니다.
사용자 정의 타입에 대한 정렬
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
type ByAge []Person
func (a ByAge) Len() int {
return len(a)
}
func (a ByAge) Swap(i, j int) {
a[i], a[j] = a[j], a[i]
}
func (a ByAge) Less(i, j int) bool {
return a[i].Age < a[j].Age
}
func main() {
people := []Person{
{"Alice", 25},
{"John", 30},
{"Bob", 20},
}
sort.Sort(ByAge(people))
fmt.Println("나이 순으로 정렬된 사람들:", people)
}
위의 예제 코드에서는 Person
구조체를 정의하고, 이를 정렬하기 위한 메서드들을 구현하였습니다. sort.Sort(ByAge(people))
를 통해 사용자 정의 정렬을 수행하고 있습니다.
인터페이스를 활용한 동적 정렬
package main
import (
"fmt"
"sort"
)
type Car struct {
Brand string
Price int
}
type Cars []Car
func (c Cars) Len() int {
return len(c)
}
func (c Cars) Swap(i, j int) {
c[i], c[j] = c[j], c[i]
}
type ByPrice struct{ Cars }
func (b ByPrice) Less(i, j int) bool {
return b.Cars[i].Price < b.Cars[j].Price
}
type ByBrand struct{ Cars }
func (b ByBrand) Less(i, j int) bool {
return b.Cars[i].Brand < b.Cars[j].Brand
}
func main() {
cars := []Car{
{"Tesla", 70000},
{"BMW", 60000},
{"Audi", 55000},
}
sort.Sort(ByPrice{cars})
fmt.Println("가격 순으로 정렬된 자동차들:", cars)
sort.Sort(ByBrand{cars})
fmt.Println("브랜드 순으로 정렬된 자동차들:", cars)
}
위의 예제 코드에서는 인터페이스를 활용하여 동적 정렬을 구현하였습니다. sort.Sort(ByPrice{cars})
와 sort.Sort(ByBrand{cars})
를 통해 가격과 브랜드에 따른 동적 정렬을 수행하고 있습니다.
Sort
패키지를 사용하여 데이터를 정렬하는 방법에 대해 간략하게 살펴보았습니다. 여러분의 코드에서 Sort
패키지를 활용하여 데이터를 정렬하는데 도움이 되길 바랍니다.
공식 문서를 참고하여 더 많은 정보를 얻을 수 있습니다.