>백엔드 개발 >Golang >Go에서 `인터페이스{}` 값을 비교할 때 등호 연산자는 어떻게 작동합니까?

Go에서 `인터페이스{}` 값을 비교할 때 등호 연산자는 어떻게 작동합니까?

DDD
DDD원래의
2024-12-03 13:28:09906검색

How Do Equality Operators Work When Comparing `interface{}` Values in Go?

인터페이스{} 유형 값 비교

Go에서는 인터페이스{} 유형의 값을 비교하는 것이 일반적인 작업입니다. 그러나 사용자 정의 구조체와 같은 중요하지 않은 유형을 비교할 때 혼란을 초래할 수 있습니다.

동등 연산자 활용

인터페이스{} 값을 비교하기 위해 같음 연산자 == 및 !=는 다음과 같습니다. 고용. 이러한 연산자는 Go 프로그래밍 언어 사양에 정의된 특정 규칙을 따릅니다.

  • 인터페이스 값은 동일한 동적 유형과 동일한 동적 값을 갖거나 둘 다 nil 값을 갖는 경우 동일한 것으로 간주됩니다.
  • X가 T를 구현하는 X 유형의 비인터페이스 값과 T 유형의 인터페이스 값의 경우 X가 비교 가능하면 값도 비교할 수 있습니다. 인터페이스 값의 동적 유형이 X와 일치하고 해당 동적 값이 비인터페이스 값과 같으면 동일합니다.

구조체와 인터페이스 비교

구조체는 중요한 역할을 합니다. 유형 비교에서. 사양에 따르면:

  • 공백이 아닌 모든 필드를 비교할 수 있으면 구조체 값을 비교할 수 있습니다.
  • 공백이 아닌 해당 필드가 동일하면 두 구조체 값이 동일합니다.

실제 애플리케이션

다음과 같은 인터페이스{} 값을 고려하세요. []인터페이스{}{1, "Hello", true}. 1과 같은 특정 값을 검색하려면 슬라이스를 반복하고 같음 연산자를 사용하여 각 요소를 비교할 수 있습니다.

for i := 0; i < len(slice); i++ {
  if slice[i] == 1 {
    // Value found!
    break
  }
}

결론

인터페이스 값 비교{} 유형 Go에는 언어 사양에 정의된 평등 규칙을 이해하는 것이 포함됩니다. 이러한 규칙을 사용함으로써 개발자는 사용자 정의 구조체와 같은 중요한 유형을 포함하여 인터페이스 값 간의 비교를 자신있게 처리할 수 있습니다.

위 내용은 Go에서 `인터페이스{}` 값을 비교할 때 등호 연산자는 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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