[go] Sort 패키지의 가변 길이 데이터 정렬

Go 언어(또는 Golang)는 가변 길이 데이터를 정렬하는 데 사용할 수 있는 풍부한 표준 라이브러리를 제공합니다. 이 포스트에서는 Go 언어에서 가변 길이 데이터를 정렬하는 방법을 알아보겠습니다.

1. Sort 패키지 소개

Go 언어의 sort 패키지는 슬라이스나 사용자 정의 컬렉션을 정렬하는 데 필요한 함수와 인터페이스를 제공합니다.

2. 사용 예시

다음은 sort 패키지를 사용하여 슬라이스를 정렬하는 간단한 예시입니다.

package main

import (
	"fmt"
	"sort"
)

func main() {
	// 정렬할 슬라이스
	nums := []int{4, 2, 5, 1, 3}

	// 슬라이스 정렬
	sort.Ints(nums)

	// 정렬된 결과 출력
	fmt.Println(nums) // 출력: [1 2 3 4 5]
}

3. 사용자 정의 타입의 정렬

사용자 정의 타입을 정렬할 때는 해당 타입에 sort.Interface 인터페이스를 구현해야 합니다. 아래는 사용자 정의 타입을 정렬하는 예시입니다.

package main

import (
	"fmt"
	"sort"
)

// Person 구조체 선언
type Person struct {
	Name string
	Age  int
}

// Person 타입을 정렬하기 위한 인터페이스 구현
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] }

func main() {
	// Person 타입 슬라이스
	people := []Person{
		{"Alice", 25},
		{"Bob", 30},
		{"Eve", 20},
	}

	// 사용자 정의 타입 정렬
	sort.Sort(ByAge(people))

	// 정렬된 결과 출력
	fmt.Println(people)
}

위의 예시에서 ByAge 타입은 sort.Interface를 구현하여 sort.Sort(ByAge(people))를 통해 사용자 정의 타입을 정렬하고 있습니다.

4. 결론

이러한 간단한 예시를 통해, Go 언어에서 가변 길이 데이터를 정렬하는 방법을 알아보았습니다. sort 패키지를 이용하여 슬라이스나 사용자 정의 타입을 정렬할 수 있으며, 이를 응용하여 다양한 정렬 알고리즘을 구현할 수 있습니다. Go 언어로 작업할 때 가변 길이 데이터를 처리해야 할 경우, sort 패키지를 유용하게 활용할 수 있습니다.