>  기사  >  백엔드 개발  >  Go에서 지도 동등성을 테스트하는 방법은 무엇입니까?

Go에서 지도 동등성을 테스트하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-13 09:46:02980검색

How to Test Map Equivalence in Go?

Go에서 맵 동등성 테스트

테이블 중심 테스트에서는 맵 동등성을 테스트하는 문제가 발생합니다. 길이와 키-값 쌍을 수동으로 확인하는 것은 지루한 일이 되며, 특히 다양한 지도 유형에 대해 반복할 때 더욱 그렇습니다.

관용적인 솔루션

관용적인 솔루션은 Go 표준 라이브러리의 반영 패키지를 활용합니다. Reflect.DeepEqual 함수는 두 개의 인터페이스{} 인수를 취하고 다음을 통해 동일성을 확인합니다.

  1. nil 값 비교
  2. 길이 비교(맵과 같은 데이터 구조의 경우)
  3. 구성 요소(맵의 키-값 쌍)의 동일성을 재귀적으로 검사

import "reflect"

func TestMapEquality(t *testing.T) {
    m1 := map[string]int{"foo": 1, "bar": 2}
    m2 := map[string]int{"foo": 1, "bar": 2}
    eq := reflect.DeepEqual(m1, m2)
    if !eq {
        t.Errorf("Maps not equal: %v", m1, m2)
    }
}

추가 참고사항

  • reflect.DeepEqual은 모든 유효한 지도 유형과 함께 작동하므로 다목적 솔루션이 됩니다.
  • 인터페이스{} 인수를 허용하므로 전달된 값이 올바른지 확인하는 것이 중요합니다. 진정한 맵입니다.
  • 이 함수의 재귀적 특성으로 인해 중첩된 데이터 구조도 동등성을 철저하게 비교할 수 있습니다.

위 내용은 Go에서 지도 동등성을 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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