전달된 값에 제네릭을 사용하여 특정 필드가 있는지 확인하는 방법이 있습니까?

王林
풀어 주다: 2024-02-10 16:27:22
앞으로
650명이 탐색했습니다.

전달된 값에 제네릭을 사용하여 특정 필드가 있는지 확인하는 방법이 있습니까?

제네릭을 사용하여 전달된 값에 특정 필드가 있는지 확인하는 방법이 있나요? 이는 많은 개발자가 제네릭을 사용할 때 자주 직면하는 문제입니다. PHP에서는 유형 제약과 인터페이스 구현을 통해 이 기능을 달성할 수 있습니다. 첫째, 유형 제약 조건을 사용하여 전달된 값이 클래스의 인스턴스인지 확인할 수 있습니다. 그런 다음 인터페이스를 사용하여 특정 필드에 대한 사양을 정의하여 전달된 값에 이러한 필드가 있는지 확인할 수 있습니다. 이런 방식으로 코드에서 제네릭을 사용하고 전달된 값이 특정 필드 요구 사항을 충족하는지 확인할 수 있습니다. 이러한 방식으로 우리는 제네릭을 더 잘 활용하고 코드의 신뢰성과 보안을 보장할 수 있습니다.

질문 내용

Go에서 id int와 같은 일부 필드에 값을 허용하는 일반 함수를 정의하려고 합니다. 여러 가지 방법을 시도했지만 아무 것도 작동하지 않는 것 같습니다. 다음은 제가 시도한 것의 예입니다.

으아악

놀이터 링크입니다: https://gotipplay.golang.org/p/2i4rsucwagf

위의 예에서는 print 함수에 전달된 각 값에 함수 내에서도 액세스할 수 있는 속성 print 函数的每个值都有一个属性 id int,该属性也可以在函数中访问。有什么方法可以在 go 中实现此目的,而无需在接口中定义方法(例如 getid() int이 있는지 확인하고 싶습니다. 인터페이스(예: getid() int)에서 메서드를 정의하지 않고 이동 중에 이를 달성할 수 있는 방법이 있나요?

해결 방법

인터페이스에서 메서드(예: getid() int)를 정의하지 않고 이동 중에 이를 달성할 수 있는 방법이 있나요?

아니요, 인터페이스에서 메소드를 정의해야 합니다.

go 1.18의 제네릭 구현은 구조체 유형을 지원하지 않지만 기본 유형 매개변수 제안에서는 지원을 제안합니다. Union의 공개 필드에 액세스하려면 이 설명도 참조하세요.

즉, 귀하의 예에서 쉽게 발생할 수 있는 오해를 지적할 가치가 있다고 생각합니다. 근사치 ~t(물결표 유형)의 의미는 "기본 유형이 t p>인 유형의 집합"을 의미합니다.

이제 글을 쓸 때:

으아악

이는 기본 유형 이 정확히 struct{ id int }임을 의미합니다. 어쨌든 여기에는 필드 struct{ id int }。无论如何,这不包括具有字段 id int 其他内容的结构。例如。 type foo struct { id int; 的底层类型;名称字符串 }struct { id int;命名字符串 },而不是 struct{ id int }다른 항목이 있는 구조는 포함되지 않습니다. 예를 들어. type foo struct { id int; 명명된 string의 기본 유형}struct{ id int } 가 아니라 struct { id int; 이므로 어쨌든 제약 조건을 충족할 수 없습니다.

현재 시간 매개변수 구현에는 부분 구조 유형을 지정하는 구문이 없습니다. 인터페이스 제약 조건에 필드 용어(및 유형 용어 및 메소드 입력)를 추가하라는 제안이 실행된 것을 기억합니다.

으아악

이렇게 하면 물결표의 의미를 훼손하지 않고 원하는 것을 달성할 수 있습니다~. 그러나 이것은 go 1.18에는 포함되지 않습니다.

위 내용은 전달된 값에 제네릭을 사용하여 특정 필드가 있는지 확인하는 방법이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!