Go Generics - 유형 제약 조건 및 공용체 설명
Go 제네릭에서 공용체는 인터페이스 제약 조건의 일부로 특정 역할을 합니다. 이것이 무엇을 의미하는지, 그리고 다양한 유형을 사용한 테스트에 대한 질문과 어떤 관련이 있는지 살펴보겠습니다.
Union이란 무엇입니까?
일반 유형 제약 조건에서 Union은 유형 매개변수가 일치해야 하는 유형입니다. 예를 들면 다음과 같습니다.
type intOrString interface { int | string }
이 제약 조건은 일반 유형 매개변수 T가 int 또는 문자열이어야 함을 보장합니다.
왜 공용체를 유형으로 사용할 수 없나요?
공용체를 사용한 인터페이스 제약은 일반적인 인터페이스 유형이 아닙니다. 이러한 구별은 Go의 일반 설계에서 의도된 것입니다.
Union 제약 조건에 허용되는 작업
Union 제약 조건과 함께 유형 매개변수를 사용하는 함수는 Go의 모든 멤버에게 허용되는 작업만 수행할 수 있습니다. 유니온 세트. 여기에는 다음이 포함됩니다.
신청하기 질문
원래 접근 방식에서는 intOrString을 유형으로 사용했는데 이는 허용되지 않습니다. 통합 제약 조건을 올바르게 사용하려면 다음과 같이 코드를 수정하세요.
type testDifferenceInput[T intOrString] [][]T type testDifferenceOutput[T intOrString] []T type testDifference[T intOrString] struct { input testDifferenceInput[T] output testDifferenceOutput[T] } func TestDifference(t *testing.T) { var ttInts []testDifference[int] var ttStrings []testDifference[string] // Populate ttInts and ttStrings with test cases for _, tt := range append(ttInts, ttStrings) { // Execute the test case } }
유형 매개변수를 기반으로 테스트 사례를 분리하면 일반 컨테이너가 서로 다른 항목을 담을 수 없다는 제한 사항을 해결할 수 있습니다. 유형입니다.
위 내용은 테스트를 위한 유형 제약 조건에서 Go Generics Union을 어떻게 효과적으로 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!