Go Generics의 인터페이스 메소드 매개변수화
버전 1.18beta2에서 Go 제네릭을 탐색하는 동안 개발자는 "인터페이스 메소드에는 매개변수가 없어야 합니다"라는 오류가 발생할 수 있습니다. 유형 매개변수를 허용하는 메소드로 인터페이스를 정의하려고 할 때 "유형 매개변수"가 발생합니다. 이 오류는 인터페이스 메소드 정의에서 유형 매개변수를 금지하는 설계 결정에서 비롯됩니다.
이 제한의 이유는 모호성과 성능에 영향을 미칠 가능성이 있기 때문입니다. 인터페이스 메소드의 유형 매개변수는 인수의 ID가 보존되는지 여부, 철저한 컴파일 시간 트리 탐색의 필요성 또는 런타임 시 성능에 영향을 미치는 반영 가능성에 대한 불확실성을 초래할 수 있습니다.
게다가 매개변수화된 메소드는 직접적으로 혼란을 초래할 수 있는 인터페이스를 구현합니다.
그러나 인터페이스 내에서 유형 매개변수를 사용할 수 있는 해결 방법이 있습니다. 유형 매개변수를 인터페이스 유형 정의로 이동하는 것입니다. 그 자체. 이 접근 방식은 Go 일반의 디자인 제한 사항을 준수하면서 원하는 기능을 유지합니다.
예:
type Reader[V Unmarshaler] interface { Read(bucket []byte, k ...[]byte) ([][]byte, error) ReadDoc(bucket []byte, factory func() (V, error), k ...[]byte) ([]V, error) } type Unmarshaler interface { UnmarshalKV(v []byte) error }
위 내용은 Generics 인터페이스 메소드에 유형 매개변수가 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!