Go에서 구조체를 Time.Time 필드별로 정렬
time.Time 유형의 멤버를 기준으로 구조체를 정렬하려고 하면 사용자 예상치 못한 결과가 발생할 수 있습니다. 이 문제는 기본 정렬 패키지에 time.Time 값 정렬 기능이 없기 때문에 발생합니다.
문제 설명:
제공된 구조체 review_data에는 date of라는 멤버가 있습니다. 시간.시간을 입력하세요. 사용자는 슬라이스 정렬을 위해 Len, Less 및 Swap 메소드를 구현하는 사용자 정의 슬라이스 유형인 timeSlice를 정의했습니다. 리뷰_데이터의 맵을 timeSlice에 매핑하고, 조각을 정렬하고, 맵이 날짜 값을 기준으로 정렬되기를 기대합니다. 그런데 정렬이 예상대로 되지 않습니다.
해결책:
Go 버전 1.8 이상에서는 대신 sort.Slice 함수를 사용하여 문제를 해결할 수 있습니다. 일종의.정렬. 날짜 필드를 기준으로 슬라이스를 정렬하는 새로운 구문은 다음과 같습니다.
sort.Slice(timeSlice, func(i, j int) bool { return timeSlice[i].date.Before(timeSlice[j].date) })
sort.Slice 함수는 정렬할 슬라이스와 비교 함수를 정의하는 클로저를 사용합니다. 이 경우 클로저는 슬라이스에 있는 두 요소의 날짜 값을 비교합니다.
설명:
Go 1.8 이전에는 sort.Sort 함수는 Sorter 인터페이스를 구현한 유형과 함께 사용됩니다. Go 1.8 이상에서는 sort.Slice가 도입되어 사용자가 맞춤 Sorter 유형을 구현하지 않고도 클로저를 사용하여 슬라이스를 정렬할 수 있습니다.
위 내용은 Go 구조체를 `time.Time` 필드로 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!