Go에서 배열 정렬: 실전 가이드
Lukas Schneider
DevOps Engineer · Leapcell

Key Takeaways
sort패키지는 고정 크기 배열이 아닌 슬라이스 정렬을 위한 내장 함수를 제공합니다.sort.Ints,sort.Strings또는sort.Float64s로 정렬하기 전에 배열을 슬라이스로 변환해야 합니다.- 사용자 지정 정렬은 복잡한 데이터 형식에 대해
sort.Interface를 사용하여 수행할 수 있습니다.
Go에서 배열 정렬은 표준 라이브러리의 sort 패키지를 사용하여 수행할 수 있는 기본적인 작업입니다. 이 패키지는 배열보다 유연하기 때문에 Go에서 더 일반적으로 사용되는 슬라이스를 정렬하는 유틸리티를 제공합니다. 그러나 배열과 슬라이스는 Go에서 밀접하게 관련되어 있으므로 배열을 정렬하려면 정렬 함수를 적용하기 전에 슬라이스로 변환해야 합니다.
Go의 배열 및 슬라이스 이해
Go에서 배열은 동일한 유형의 요소로 구성된 고정 크기 시퀀스입니다. 예를 들면 다음과 같습니다.
var arr [5]int = [5]int{3, 1, 4, 5, 2}
슬라이스는 배열 요소에 대한 동적 크기의 유연한 뷰입니다. 슬라이스는 더 다재다능하며 Go 프로그래밍에서 더 자주 사용됩니다. 슬라이스는 다음과 같이 선언하고 초기화할 수 있습니다.
var s []int = []int{3, 1, 4, 5, 2}
슬라이스 정렬
정수 슬라이스를 정렬하려면 sort 패키지의 sort.Ints 함수를 사용할 수 있습니다.
package main import ( "fmt" "sort" ) func main() { s := []int{3, 1, 4, 5, 2} sort.Ints(s) fmt.Println(s) // 출력: [1 2 3 4 5] }
float64 또는 string과 같은 다른 유형의 슬라이스를 정렬하기 위해 Go는 각각 sort.Float64s 및 sort.Strings를 제공합니다.
배열 정렬
sort 패키지 함수는 슬라이스에서 작동하므로 배열을 정렬하려면 먼저 슬라이스로 변환해야 합니다. 방법은 다음과 같습니다.
package main import ( "fmt" "sort" ) func main() { arr := [5]int{3, 1, 4, 5, 2} sort.Ints(arr[:]) fmt.Println(arr) // 출력: [1 2 3 4 5] }
이 예제에서 arr[:]는 배열 arr의 모든 요소를 포함하는 슬라이스를 만듭니다. 그런 다음 sort.Ints 함수는 이 슬라이스를 제자리에서 정렬하여 원래 배열도 수정합니다.
사용자 지정 정렬
사용자 지정 비교기를 기반으로 정렬하거나 필드 중 하나로 구조체를 정렬하는 것과 같은 더 복잡한 정렬 시나리오의 경우 Len(), Less(i, j int) bool 및 Swap(i, j int) 메서드가 필요한 sort.Interface 인터페이스를 구현할 수 있습니다.
다음은 특정 필드별로 구조체 슬라이스를 정렬하는 예입니다.
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) Less(i, j int) bool { return a[i].Age < a[j].Age } func (a ByAge) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func main() { people := []Person{ {"Alice", 30}, {"Bob", 25}, {"Charlie", 35}, } sort.Sort(ByAge(people)) fmt.Println(people) }
결과는 다음과 같습니다.
[{Bob 25} {Alice 30} {Charlie 35}]
이 예제에서는 Person 구조체와 나이별로 사람을 정렬하기 위해 sort.Interface를 구현하는 ByAge 유형을 정의합니다. 그런 다음 sort.Sort 함수는 ByAge에 대해 정의된 Less 메서드에 따라 슬라이스를 정렬합니다.
결론
Go에서 정렬은 sort 패키지를 사용하여 간단합니다. 배열은 크기가 고정되어 있고 덜 일반적으로 사용되는 반면 슬라이스는 더 많은 유연성을 제공하며 Go에서 컬렉션의 표준입니다. 배열을 슬라이스로 변환하면 Go의 강력한 정렬 기능을 활용하여 데이터를 효율적으로 구성할 수 있습니다.
FAQs
아니요, Go의 sort 패키지는 슬라이스에서만 작동하므로 정렬하기 전에 배열을 슬라이스로 변환해야 합니다.
float64 값 슬라이스를 오름차순으로 정렬하려면 sort.Float64s(slice)를 사용합니다.
구조체 유형에 대해 sort.Interface 메서드(Len(), Less(), Swap())를 구현하고 sort.Sort()를 사용합니다.
Go 프로젝트 호스팅을 위한 최고의 선택, Leapcell입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무료로 무제한 프로젝트 배포
- 사용량에 대해서만 지불합니다. 요청이나 요금이 없습니다.
타의 추종을 불허하는 비용 효율성
- 유휴 요금 없이 종량제.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 쉬운 고 동시성 처리를 위한 자동 확장.
- 운영 오버헤드가 제로이므로 빌드에만 집중하십시오.
설명서에서 자세히 알아보십시오!
X에서 팔로우하세요: @LeapcellHQ



