다음을 사용하여 다양한 유형의 결과를 저장하고 로드하려고 할 때 일반 인터페이스와 그 구현을 사용하는 경우 Go에서 V를 추론하는 문제가 발생합니다. type:
cannot infer V: infer type parameter from constraint implementation
Go 1.20 및 이전 버전에서는 일반 제약 조건 ConfigStorage[K, V] 구현에서 V 유형을 추론하는 것이 간단하지 않습니다. 유형 추론 알고리즘은 제약 조건을 구현하는 구체적인 유형에서 유형 인수를 추론하는 능력이 제한되어 있습니다.
Go 1.21 이상:
이후 Go 1.21에서는 이 문제가 해결되었습니다. 유형 추론은 이제 인터페이스 메서드에 사용되는 유형을 고려합니다. 따라서 유형 제약 조건을 지정하지 않고 간단히 GetValue를 호출할 수 있습니다.
result, _ = GetValue(fileStorage, "key")
Go 1.20 이하:
이전 버전의 Go에서는 유형을 명시적으로 지정해야 합니다. GetValue 매개변수:
GetValue[string, string](fileStorage, "key") // First string for K, second for V
Go 릴리스 노트에서는 이제 인터페이스에 값을 할당할 때 유형 추론이 메서드를 고려한다는 점을 강조합니다. 이를 통해 메서드 시그니처의 형식 매개 변수에 대한 형식 인수를 메서드의 일치하는 매개 변수 형식에서 유추할 수 있습니다.
Go 1.21 이전에는 함수 인수 형식 추론을 사용하여 비형 인수에서 형식 인수를 추론하는 제안이 있었습니다. 그러나 알려진 유형 인수에서 알 수 없는 유형 인수를 추론하기 위해 제약 조건 유형 유추는 처음에는 지원되지 않았습니다. 이러한 제한으로 인해 제약 조건을 구현하는 유형에서 V를 추론할 때 "V를 추론할 수 없습니다" 오류가 발생했습니다.
위 내용은 일반 인터페이스를 구현할 때 Go의 'V를 추론할 수 없음' 오류를 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!