[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 패키지를 활용하여 데이터를 정렬하는데 도움이 되길 바랍니다.

공식 문서를 참고하여 더 많은 정보를 얻을 수 있습니다.