>  기사  >  백엔드 개발  >  Go에서 여러 기준에 따라 중첩된 슬라이스가 있는 구조체 슬라이스를 어떻게 정렬합니까?

Go에서 여러 기준에 따라 중첩된 슬라이스가 있는 구조체 슬라이스를 어떻게 정렬합니까?

DDD
DDD원래의
2024-10-28 21:10:03939검색

How do you sort a slice of structs with nested slices in Go based on multiple criteria?

중첩 슬라이스로 구조체 슬라이스 정렬

Go에서는 내장된 정렬 패키지를 사용하여 사용자 정의 구조체 슬라이스를 정렬할 수 있습니다. 부모-자식 관계를 나타내는 두 개의 구조체인 Parent와 Child를 정의하는 다음 코드를 고려해 보세요.

<code class="go">type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}</code>

부모 구조체 조각이 있고 이를 두 가지 기준에 따라 정렬한다고 가정합니다.

정렬 기준:

  1. Parent.id를 기준으로 Parent 슬라이스를 오름차순으로 정렬합니다.
  2. 각 Parent에 대해 Child를 기준으로 하위 슬라이스를 정렬합니다. ID는 상위 항목 내에서 오름차순으로 정렬됩니다.

해결책:

제공된 코드 조각은 정렬 요구 사항을 해결합니다.

``
// Id
sort.Slice(parents, func(i, j int) bool {

return parents[i].id < parents[j].id })

// 각 부모에 대해 부모 슬라이스의 각 부모를 정렬합니다. children Slice by Id
for _, parent := range parent {

sort.Slice(parent.children, func(i, j int) bool { 
    return parent.children[i].id < parent.children[j].id })

}
``

sort.Slice 함수는 슬라이스에서 직접 작동하므로 필요 없음 중간 컨테이너용입니다.

  1. Parent.id를 기준으로 상위 슬라이스를 정렬합니다.
  2. 정렬된 상위 슬라이스의 각 상위에 대해 다음을 사용하여 Child.id를 기반으로 하위 슬라이스를 정렬합니다. 중첩 루프.

결과는 예상 출력과 일치합니다.

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]

위 내용은 Go에서 여러 기준에 따라 중첩된 슬라이스가 있는 구조체 슬라이스를 어떻게 정렬합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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