>백엔드 개발 >Golang >Go에서 인터페이스{} 값에 대해 동일성 검사를 어떻게 수행할 수 있나요?

Go에서 인터페이스{} 값에 대해 동일성 검사를 어떻게 수행할 수 있나요?

DDD
DDD원래의
2024-11-30 14:09:13737검색

How Can I Perform Equality Checks on interface{} Values in Go?

인터페이스를 사용한 인터페이스 동등성 검사{}

Go에서는 인터페이스{} 슬라이스에 저장된 값에 대한 동등성 검사의 복잡성을 이해하는 것이 중요합니다. 이 가이드에서는 지정된 인터페이스 값에 대해 사용자 지정 구조체를 비롯한 다양한 값 유형이 같은지 확인하는 데 사용할 수 있는 방법을 살펴봅니다.

비교 가능한 유형에 대한 접근 방식

다음과 같은 비교 가능한 유형을 처리할 때 정수(int)이므로 동등성 검사는 간단합니다. == 연산자를 사용하여 값을 직접 비교할 수 있습니다.

var v interface{} = 10

for i := 0; i < len(A); i++ {
  if A[i] == v {
    fmt.Println("Gotcha!")
    break
  }
}

사용자 정의 구조체의 동일성 확인

비교 가능한 사용자 정의 구조체의 경우 동일성 확인은 필드 비교 가능성에 따라 달라집니다. 모든 필드를 비교할 수 있으면 ==를 사용하여 구조체를 직접 비교할 수 있습니다. 그렇지 않은 경우에는 고유한 동등 함수를 정의해야 합니다.

Go 사양 통찰력

Go 프로그래밍 언어 사양을 참조하면 인터페이스 동등성을 명확하게 알 수 있습니다.

  • 인터페이스 값은 다음과 같습니다. 동적 유형과 동적 값이 동일하거나 둘 다 nil인 경우 비교할 수 있습니다.
  • 비인터페이스 값과 인터페이스 값은 다음과 같은 경우에 비교할 수 있습니다. 비인터페이스 유형은 인터페이스 유형을 구현하고 해당 값이 동일합니다.
  • 구조체 값은 모든 필드가 비교 가능하면 비교 가능하고 해당 필드가 동일하면 동일합니다.

플레이그라운드 데모

다음 플레이그라운드에서는 다양한 값 유형에 대한 동등성 검사를 보여줍니다. https://play.golang.org/p/bgO1_V87v9k

결론

인터페이스{} 값에 대한 동등 검사를 이해하면 Go 프로그래밍이 단순화됩니다. 인터페이스 값, 구조체 및 비교 가능한 유형에는 정확한 결과를 위해 따라야 하는 특정 동등 규칙이 있다는 점을 기억하세요.

위 내용은 Go에서 인터페이스{} 값에 대해 동일성 검사를 어떻게 수행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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