Go에서 Time.Time 멤버별로 구조체 배열 정렬
Go에서는 다음을 사용하여 특정 멤버별로 데이터 구조를 정렬할 수 있습니다. 패키지 정렬. 이는 날짜 또는 시간 필드를 기준으로 요소를 시간순으로 정렬하려는 경우와 같은 다양한 시나리오에 유용합니다.
시간을 기준으로 구조체 조각을 정렬하려면 Time.Time 멤버를 사용하여 사용자 정의 유형을 정의할 수 있습니다. sort.Interface 인터페이스를 구현합니다. 이 유형은 다음 메서드를 정의해야 합니다.
주어진 코드에서 이러한 메소드를 구현하는 timeSlice 유형을 정의했습니다. 그러나 Less 메서드는 포인터를 실제 값 대신 time.Time 값과 비교합니다. 이 문제를 해결하려면 time.Time의 Before 메서드를 사용하여 시간 값을 직접 비교할 수 있습니다.
func (p timeSlice) Less(i, j int) bool { return p[i].date.Before(p[j].date) }
사용자 정의 유형을 정의한 후에는 sort.Sort 함수를 사용하여 슬라이스를 정렬할 수 있습니다. 그러나 Go 버전 1.8 이상에서는 더 효율적이고 간결한 sort.Slice 함수를 사용할 수 있습니다.
sort.Slice(timeSlice, func(i, j int) bool { return timeSlice[i].date.Before(timeSlice[j].date) })
sort.Slice 함수는 두 가지 인수, 즉 정렬할 슬라이스와 비교 함수를 정의하는 클로저입니다. 이 경우 클로저는 인덱스 i의 요소가 인덱스 j의 요소보다 작으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
슬라이스 정렬 후 요소는 날짜를 기준으로 오름차순으로 정렬됩니다. 회원입니다.
위 내용은 Go에서 `time.Time` 멤버를 기준으로 구조체 조각을 효율적으로 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!