인터페이스 동등성 검사{}
Go에서 인터페이스{} 값을 비교하는 것은 다소 까다로울 수 있으며, 특히 사용자 정의 구조체를 다룰 때 더욱 그렇습니다. . 이 문서는 이 측면을 조명하고 다음 질문에 대한 간결하고 포괄적인 답변을 제공하는 것을 목표로 합니다.
특히 사용자 정의와 관련된 경우 인터페이스{} 값의 동등성을 효과적으로 확인하는 방법은 무엇입니까? 구조체?
인터페이스{} 평등
먼저, 인터페이스{} 값이 동등 비교를 지원한다는 점을 이해하는 것이 중요합니다. 두 개의 인터페이스{} 값이 동일한 동적 유형과 동일한 동적 값을 가지거나 둘 다 nil 값을 갖는 경우 동일합니다.
구조체 및 인터페이스
구조체 값을 인터페이스{} 값으로 변경하면 구조체 유형의 값이 비교 가능하고 구조체가 인터페이스를 구현하는 경우에만 동등성이 유지됩니다. 또한 구조체의 동적 유형은 인터페이스의 동적 유형과 일치해야 하며 해당 동적 값은 인터페이스의 동적 값과 동일해야 합니다.
예
예제를 살펴보겠습니다. 다음 동작을 설명합니다.
type MyStruct struct { Name string Age int } var v interface{} = MyStruct{Name: "John", Age: 30} var A = []interface{}{MyStruct{Name: "Alice", Age: 25}, MyStruct{Name: "Bob", Age: 35}} for i := 0; i < len(A); i++ { if A[i] == v { fmt.Println("Found") break } }
이 시나리오에서는 A[i]와 v 간의 동등성 검사가 성공합니다. 두 값 모두 동일한 필드를 가진 MyStruct 유형이기 때문입니다.
결론
인터페이스 평등의 개념과 두 값 사이의 관계를 이해하고 나면 Go의 평등 검사를 관리하기 쉬워집니다. 구조체와 인터페이스. 이러한 원칙을 이해하면 사용자 지정 구조체를 포함한 인터페이스 값을 자신있게 효과적으로 비교할 수 있습니다.
위 내용은 Go에서 특히 사용자 정의 구조체의 `인터페이스{}` 값이 동일한지 어떻게 비교할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!