>백엔드 개발 >Golang >일반 인터페이스를 구현할 때 Go의 'V를 추론할 수 없음' 오류를 어떻게 해결할 수 있나요?

일반 인터페이스를 구현할 때 Go의 'V를 추론할 수 없음' 오류를 어떻게 해결할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-06 06:24:13531검색

How Can I Resolve Go's

일반 인터페이스 구현을 위한 유형 매개변수 추론: "V를 추론할 수 없음" 수수께끼

문제

다음을 사용하여 다양한 유형의 결과를 저장하고 로드하려고 할 때 일반 인터페이스와 그 구현을 사용하는 경우 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.