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