여러 매개변수가 있는 구조를 정렬하는 방법
프로그래밍에서는 여러 기준에 따라 데이터를 정렬해야 하는 경우가 많습니다. Go에서는 사용자 정의 정렬 기능을 사용하여 이를 효과적으로 달성할 수 있습니다.
문제:
LastName과 FirstName을 기준으로 구조체 조각을 어떻게 정렬합니까?
slices.SortFunc를 사용한 솔루션(Go 1.22 ):
slices.SortFunc(members, func(a, b Member) int { return cmp.Or( cmp.Compare(a.LastName, b.LastName), cmp.Compare(a.FirstName, b.FirstName), ) })
이 솔루션은 Slices.SortFunc 함수를 사용하여 LastName 및 FirstName 필드를 순서대로 기준으로 구조체를 비교합니다.
sort.Slice 또는 sort.Sort:
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 })
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))
두 솔루션 모두 LastName 필드를 먼저 비교합니다. 동일하면 FirstName 필드를 비교합니다. 결과는 두 필드를 기준으로 정렬된 회원 조각입니다.
위 내용은 Go에서 여러 필드(성, 이름 순)로 구조체를 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!