Go의 일반 제약 조건: 공용체 유형에 대한 공유 메서드 사용
Go 제네릭(v1.18)에서는 유형 공용체 제약 조건을 사용하여 다음을 수행할 수 있습니다. 일반 유형 매개변수에 할당할 수 있는 유형 세트를 정의합니다. 그러나 이러한 유형에 공유 메서드를 사용하면 오류가 발생할 수 있습니다.
다음 코드를 고려하세요.
type A struct {} type B struct {} type AB interface { *A | *B } func (a *A) some() bool { return true } func (b *B) some() bool { return false } func some[T AB](x T) bool { return x.some() // <- error }
컴파일러가 공용체 유형 AB에서 some 메서드를 찾을 수 없기 때문에 오류가 발생합니다. . 이 문제를 해결하려면 인터페이스 제약 조건에 메소드를 추가해야 합니다.
type AB interface { *A | *B some() bool } func some[T AB](x T) bool { return x.some() // works }
이는 일반 유형 T를 *A와 *B를 모두 구현하는 유형으로 제한하고 some 메소드도 정의합니다.
그러나 Go 1.18 릴리스 노트에 명시된 바와 같이 이는 일시적인 제한 사항입니다. Go 1.19에서는 이 제한 사항이 제거되어 컴파일러가 공용체 유형에서 some 메서드를 자동으로 추론할 수 있을 것으로 예상됩니다.
위 내용은 Go Generics에서 공용체 유형 제약 조건과 함께 공유 메서드를 어떻게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!