여러 매개변수를 사용하여 구조체 정렬
질문:
어떻게 구조체 배열을 정렬할 수 있습니까? 여러 매개변수로 정렬됩니다. 특히 성, 이름 순으로 정렬됩니다. Go?
답변:
Go에는 여러 매개변수가 있는 구조체를 정렬하는 여러 가지 접근 방식이 있습니다.
슬라이스를 사용하는 Go 1.22.SortFunc
Go 최신 버전 (1.22 이상)은 Slices.SortFunc를 사용하여 간결한 솔루션을 제공합니다:
slices.SortFunc(members, func(a, b Member) int { return cmp.Or( cmp.Compare(a.LastName, b.LastName), cmp.Compare(a.FirstName, b.FirstName), ) })
sort.Slice 또는 sort.Sort 함수
Go 이전 버전의 경우 다음을 고려하세요. sort.Slice 또는 sort.Sort를 사용합니다. 둘 다 원하는 매개변수에 따라 순서를 결정하는 사용자 정의 less 함수가 필요합니다.
sort.Slice 사용:
sort.Slice(members, func(i, j int) bool { if members[i].LastName != members[j].LastName { return members[i].LastName < members[j].LastName } return members[i].FirstName < members[j].FirstName })
sort.Sort 사용:
sort.Interface 인터페이스를 구현하는 사용자 정의 유형을 생성하고 Len을 정의합니다. Swap 및 Less 방법.
type byLastFirst []Member func (members byLastFirst) Len() int { return len(members) } func (members byLastFirst) Swap(i, j int) { members[i], members[j] = members[j], members[i] } func (members byLastFirst) Less(i, j int) bool { if members[i].LastName != members[j].LastName { return members[i].LastName < members[j].LastName } return members[i].FirstName < members[j].FirstName } sort.Sort(byLastFirst(members))
성능 고려 사항:
이러한 접근 방식은 구조체를 정렬하는 다양한 방법을 제공하지만 핫스팟을 최적화하려면 성능 분석이 중요합니다. 귀하의 애플리케이션 요구 사항에 가장 적합한 접근 방식을 선택하십시오.
위 내용은 Go에서 여러 매개변수로 구조체를 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!