여러 기준으로 구조체 정렬
Go에서는 다양한 접근 방식을 사용하여 구조체 조각을 정렬할 수 있습니다. 이 토론에서는 여러 매개변수, 특히 LastName과 FirstName을 기준으로 정렬하는 데 중점을 둡니다.
방법 1: Slices.SortFunc(Go 1.22 )
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), ) })
방법 2: sort.Slice 또는 sort.Sort
Go 1.8에서는 sort.Slice 또는 sort.Sort를 사용할 수 있습니다. 둘 다 순서를 결정하는 데 더 적은 기능이 필요합니다. 이 함수는 LastName 및 FirstName 필드를 비교합니다.
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를 구현하는 사용자 정의 유형이 필요합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!