미리 정의된 유형이 있는 재귀 유형 제약 조건
Go 제네릭에서는 인터페이스를 사용하여 제네릭 유형에 유형 제약 조건을 지정하는 것이 가능합니다. 그러나 제네릭 유형의 인수를 사용하여 메소드 구현을 강제하는 것은 어려울 수 있습니다.
Go 제네릭에서 재귀 유형 제약 조건을 달성하기 위해 제네릭 유형을 다음과 같이 사용하는 메소드로 인터페이스를 정의할 수 있습니다. 인수:
type Lesser[T any] interface { Less(T) bool }
그런 다음 Lesser[T] 유형의 두 인수를 사용하여 다음을 반환하는 함수를 만들 수 있습니다. 부울:
func IsLess[T Lesser[T]](x, y T) bool { return x.Less(y) }
이제 Lesser[T] 인터페이스를 구현하는 사용자 정의 유형을 함수에서 사용할 수 있습니다.
type Apple int func (a Apple) Less(other Apple) bool { return a < other } type Orange int func (o Orange) Less(other Orange) bool { return o < other } func main() { fmt.Println(IsLess(Apple(10), Apple(20))) // true fmt.Println(IsLess(Orange(30), Orange(15))) // false }
Lesser[T] 제약 조건은 제공된 유형이 IsLess 함수에는 동일한 유형의 인수를 사용하는 Less 메서드를 구현합니다. 이는 유형 리터럴을 사용하지 않고도 재귀적인 유형 제약 조건을 허용합니다.
위 내용은 인터페이스를 사용하여 Go Generics에서 재귀 유형 제약 조건을 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!