>백엔드 개발 >Golang >Go 구조체를 `time.Time` 필드로 정렬하는 방법은 무엇입니까?

Go 구조체를 `time.Time` 필드로 정렬하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-03 18:19:09266검색

How to Sort a Go Struct by its `time.Time` Field?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.