제네릭을 사용하여 전달된 값에 특정 필드가 있는지 확인하는 방법이 있나요? 이는 많은 개발자가 제네릭을 사용할 때 자주 직면하는 문제입니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!