일반 유형 인수 불일치: 할당이 실패하는 이유
Go에서 Props[예] 유형의 값을 다음 변수에 할당하려고 합니다. Props[Generic]을 입력하면 오류가 발생합니다. Generic 인터페이스를 구현하는 예제에도 불구하고, 다른 유형 인수를 사용하여 제네릭 유형을 인스턴스화하면 고유한 명명된 유형이 생성되기 때문입니다.
제네릭을 사용한 유형 인스턴스화
유형을 지정할 때 함수 인수이든 반환 유형이든 제네릭 유형에 대한 인수는 새로운 고유 유형이 인스턴스화됩니다. 예:
func Problem() Props[Generic] { return ExampleProps }
이 줄은 유형 인수 Generic을 사용하여 Props를 인스턴스화하여 Props[Generic]이 됩니다. 마찬가지로, 예제Props는 유형 인수 예제를 사용하여 인스턴스화되어 Props[예].
유형 비비교성 및 할당
Props[예] 및 Props[일반]이 됩니다. 서로 다른 두 가지 명명된 유형이므로 인수로 사용된 유형(예: 예제 및 일반)이라 하더라도 서로 할당할 수 없습니다. 인터페이스 구현과 같은 할당 조건을 충족합니다.
이 개념은 any로 인스턴스화된 제네릭에도 유사하게 적용됩니다. any는 인터페이스{}의 별칭인 정적 유형이며 T 또는 특정 유형과 일치하지 않습니다.
문제 해결
할당 오류를 해결하려면 유연성을 유지하면서 유형 매개변수를 사용하여 Props를 인스턴스화하는 것을 고려하십시오.
type Props[G Generic] struct{ Value G } func Problem[T Generic](v T) Props[T] { return Props[T]{ Value: v } }
이를 통해 다음과 같은 유형 인수를 사용하여 Props를 인스턴스화할 수 있습니다. 필요한 제약 조건을 충족하고 예상대로 반환된 값을 사용합니다.
위 내용은 Go Generics: 왜 `Props[예제]`를 `Props[Generic]`에 할당할 수 없나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!