>  기사  >  백엔드 개발  >  Go에서 요소 순서에 관계없이 구조체와 중첩 슬라이스를 의미론적으로 비교하는 방법

Go에서 요소 순서에 관계없이 구조체와 중첩 슬라이스를 의미론적으로 비교하는 방법

WBOY
WBOY앞으로
2024-02-10 18:39:10844검색

无论 Go 中元素的顺序如何,如何在语义上比较结构与嵌套切片

Go의 요소 순서에 관계없이 구조와 중첩된 슬라이스를 의미론적으로 비교하는 방법은 일반적인 질문입니다. Go 언어에서 구조는 집계 데이터 유형인 반면 슬라이스는 동적 배열입니다. PHP 편집자 Zimo가 이 질문에 답해 드릴 것입니다. 구조를 비교할 때 모든 구성원이 비교 가능한 유형인 경우에만 비교할 수 있습니다. 중첩된 슬라이스를 비교할 때 슬라이스의 요소를 수준별로 비교해야 합니다. 슬라이스의 요소 유형을 비교할 수 없으면 재귀적 방법을 사용하여 슬라이스의 각 요소를 비교해야 합니다. 구조체이든 중첩된 슬라이스이든 요소를 ​​반복하여 비교할 수 있습니다.

질문 내용

다음 유형 구조 정의를 제공하세요.

으아악

모든 계층 수준에서 슬라이스 요소의 순서에 관계없이 A의 다음 두 인스턴스가 의미상 동일한지 테스트하고 싶습니다.

으아악

비교 결과가 true

를 반환해야 한다고 주장 해결 방법

Package cmp는 의미론적 동등성을 위해 두 값을 비교할 때 reflect.DeepEqual를 더 강력하고 안전하게 대체하기 위한 것입니다.

여기에는 모든 계층 수준에서 슬라이스 요소의 순서에 관계없이 의미론적 평등 구조 비교가 완벽하게 구현되어 있습니다.

파일 source.go

으아악

파일 source_test.go

으아악

위 내용은 Go에서 요소 순서에 관계없이 구조체와 중첩 슬라이스를 의미론적으로 비교하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제