데이터 구조 정렬은 프로그래밍의 기본 작업이며 Go에서는 이를 처리하기 위한 다양한 접근 방식을 제공합니다. 특히 구조체 배열은 임의의 필드 이름을 기준으로 정렬할 때 문제가 됩니다.
다음 Go 코드를 고려하세요.
type Planet struct { Name string `json:"name"` Aphelion float64 `json:"aphelion"` // in million km Perihelion float64 `json:"perihelion"` // in million km Axis int64 `json:"Axis"` // in km Radius float64 `json:"radius"` } func main() { planets := [...]Planet{{"Mars", 249.2, 206.7, 227939100, 3389.5}, {"Venus", 108.939, 107.477, 108208000, 6051.8}, {"Earth", 151.930, 147.095, 149598261, 6371.0}} }
정렬 방법 축 필드로 행성 배열?
최근 Go 버전에서는 sort.Slice 함수가 사용자 정의 비교 함수를 기반으로 슬라이스를 정렬하는 효율적인 방법을 제공합니다.
sort.Slice(planets[:], func(i, j int) bool { return planets[i].Axis < planets[j].Axis })
여기서 i와 j는 슬라이스 요소의 인덱스이고 비교 함수는 다음을 반환합니다. 인덱스 i의 요소가 인덱스 j의 요소보다 앞에 와야 하는 경우 true입니다. 이번 경우에는 행성의 축 필드를 비교하고 있습니다.
(슬라이스와 반대되는) 배열을 사용할 때 배열을 슬라이스로 변환하려면 슬라이스 오버레이 연산자 [:]가 필요합니다.
sort.Slice를 활용하여 임의의 필드 이름을 기반으로 구조체 배열을 간단하고 효율적으로 정렬할 수 있습니다. 이는 Go에서 복잡한 데이터 구조를 정렬하기 위한 Python과 유사한 경험을 제공합니다.
위 내용은 사용자 정의 필드 이름을 기준으로 구조체의 Go 배열을 효율적으로 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!